Hibernate是典型的ORM框架,对JDBC进行轻量级的封装,能够使程序员更加便捷的操作对象
可以去hibernate官网去下载,版本之间差异不大,我是用的是Hibernate 4.3
搭建Hibernate环境步骤:
一、 使用xml文件映射
1.下载Hibernate包
2.解压后,找到 lib/required 文件夹下的jar包就是一个hibernate程序所必需的
3.新建java工程,把jar包添加到工程中去
4.在src目录下新建*.cfg.xml文件,这是hibernate默认的配置文件,该配置文件中指定数据库驱动、用户名、密码等,还有hibernate的自身配置,是否显示SQL
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 配置连接数据库的基本信息 --> <property name="connection.username">root</property> <property name="connection.password">1234</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate</property> <!-- 配置hibernate基本信息 配置hibernate方言 当数据库版本为5.0以上时,方言设为MySQLInnoDBDialect便不能自动创建表,需要修改为MySQL5InnoDBDialect --> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 执行操作时,是否在控制台打印信息 --> <property name="show_sql">true</property> <!-- 格式化sql --> <property name="format_sql">true</property> <!-- 指定自动生成数据表的策略 --> <property name="hbm2ddl.auto">update</property> <!-- 指定关联的hbm.xml文件 --> <mapping class="com.hibernate.test.News" resource="com/hibernate/test/News.hbm.xml"/> </session-factory> </hibernate-configuration>
5.新建需要持久化的类,新建这个类所需要的条件
a.必须提供无参的构造器,方便底层反射调用
b.提供一个标志属性,通常作为数据表的主键,否则一些功能将不起作用 如:session.save() or update()
c.每个字段提供getter() setter()
d.使用非final类,运行时生成代理,是hibernate的一个重要功能,如果持久化类没有实现任何接口,hibernate将使用CGLIB生成代理,如果是final类,则无法生成代理
e.重写equals()和hashcode()
6.为持久化类配置*.hbm.xml文件,在去.cfg.xml文件中映射该文件,到此hibernate的环境搭建成功
7.新建测试方法
public void test1() { // 1.创建sessionfactory对象 SessionFactory sessionfactory = null; // 1)创建configration对象:配置hibernate基本配置信息,和对应关系信息 Configuration con = new Configuration().configure(); //con.addClass(News.class); 使用5.0以上版本时,这句必须要写 // 2)创建一个ServiceRegisty对象:代表service自己,hibernate的任何配置都需要在该对象中注册,才会有效 StandardServiceRegistry serviceregisty = new StandardServiceRegistryBuilder() .applySettings(con.getProperties()).build(); // 3)实例化sessionfactory sessionfactory = con.buildSessionFactory(serviceregisty); // 2.创建session对象 Session session = sessionfactory.openSession(); // 3.开启事物 Transaction transaction = session.beginTransaction(); // 4.执行保存操作 News n = new News("江南明月", "闾丘薇露", new Date(new java.util.Date().getTime())); session.save(n); // News n=(News) session.get(News.class, 1); // System.out.println(n); // 5.提交事务 transaction.commit(); // 6.关闭session对象 session.close(); // 7.关闭sessionfactory对象 sessionfactory.close(); }
二、过程中的小细节
1.hibernate 4.3 和 5.0及以上版本创建Serviceregisty方法不一致,5.0以上版本不再使用之前的方式
2. 5.0版本在映射*.hbm.xml文件之后还是会报Unknown Mapping的错误,必须使用configuration.addClass手动加载
3.学习过程中多个项目有共同的jar包时,可以新建User liberary,每次使用时添加就可以,就不会有很多份了,新建方法:preferences ->java ->build path ->User Libraries
来源:https://www.cnblogs.com/wb1993/p/5644367.html