hibernate学习-HibernateDemo
上篇文章我们讲述了eclipse安装hibernate插件的过程,这篇文章我们来做第一个HibernateDemo。
1)、hibernate的jar开发包的下载,官网下载地址:http://hibernate.org/orm/downloads/,解压后我们可以在hibernate-release-5.2.3.Final\lib\required文件夹下找到hibernate开发用到的jar包。
2)、新建一个Java Project项目,导入jar包(记得把MySQL的jar包也加进去),在src根目录下新建一个***.cfg.xml文件(安装插件成功后可以快速新建),然后我们进行文件配置,代码如下:
<session-factory> <!-- 连接数据库的基本信息 --> <property name="connection.username">root</property><!-- MySQL数据库的用户名 --> <property name="connection.password">root</property><!-- MySQL数据库的密码 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- MySQL驱动 --> <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property><!--MySQL的URL,localhost(本地地址,可以省略)也可以改成远程服务器地址 --> <!-- 配置hibernate的基本信息 --> <!-- hibernate所使用的基本方言 --> <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <!-- 执行操作时是否在控制台打印 --> <property name="show_sql">true</property> <!-- 是否对sql格式化 --> <property name="format_sql">true</property> <!-- 指定自动生成数据表的策略 --> <property name="hbm2ddl.auto">update</property> <!-- 指定关联的.hbm.xml文件,这一步应该生成java beans后再配置 --> <mapping resource="com/hibernateHello/News.hbm.xml"/> </session-factory>
3)、定义JavaBeans(对应你的数据表),
package com.hibernateHello; import java.sql.Date; public class News { private Integer id; private String author; private String title; private Date date; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public News() { // TODO Auto-generated constructor stub } public News(String author, String title, Date date) { // super(); this.author = author; this.title = title; this.date = date; } }
4)、快捷生成JavaBeans对应的News.hbm.xml文件(也是插件提供),具体操作如下图所示。
生成的代码:
<hibernate-mapping> <class name="com.hibernateHello.News" table="NEWS"> <!-- id 主键 --> <id name="id" type="java.lang.Integer"> <column name="ID" /> <!-- 指定主键生成方式 native:使用数据库本地方式 --> <generator class="native" /> </id> <property name="author" type="java.lang.String"> <column name="AUTHOR" /> </property> <property name="title" type="java.lang.String"> <column name="TITLE" /> </property> <property name="date" type="java.sql.Date"> <column name="DATE" /> </property> </class> </hibernate-mapping>
5)、 ***.cfg.xml指定关联的**.hbm.xml文件(*千万不要忘记)
6)、通过JUnit测试,代码如下:
package com.hibernateHello; import java.sql.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.junit.After; import org.junit.Before; public class Test { private Configuration configuration; private StandardServiceRegistry registry; private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void first() { // 创建Configuration对象:对应hibernate的基本配置信息和对象关系映射信息 configuration = new Configuration().configure(); //创建一个对象StandardServiceRegistry,configure("你的***.cfg.xml"),默认为hibernate.cfg.xml registry = new StandardServiceRegistryBuilder().configure().build(); // 创建会话工厂对象 sessionFactory = configuration.buildSessionFactory(registry); // 创建一个Session对象 session = sessionFactory.openSession(); // 开启事物 transaction = session.beginTransaction(); }
/*
* saveNews()添加数据
* getNews()和loadNews()查找数据
* updateNews()修改数据
* deleteNews()删除数据
*/
@org.junit.Test
public void saveNews() { News news = new News("63va", "fe", new Date( new java.util.Date().getTime())); session.save(news); } @org.junit.Test public void getNews() { News a1 = session.get(News.class, 1); System.out.println(a1); } @org.junit.Test public void loadNews() { News a1 = session.load(News.class, 1); System.out.println(a1); } @org.junit.Test public void updateNews() { News a1 = session.get(News.class, 2); a1.setAuthor("ccc"); session.update(a1); System.out.println(a1); } @org.junit.Test public void deleteNews() { News a1 = session.get(News.class, 4); session.delete(a1); // System.out.println(a1); } @After public void finsh() { // 提交事物 transaction.commit(); //关闭session session.close(); // 关闭SessionFactory对象 sessionFactory.close(); } }
7)、运行效果如图所示:
作者:starryfeiii
出处:http://www.cnblogs.com/feiii/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/feiii/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。