hibernate框架
使用hibernate
一、导入hibernate相关jar包或者添加hibernate支持

二、配置bibernate.xml文件
1、在src目录下,新建一个xml(basic类型的),取名hibernate.xml,选择DTD类型

2、编写Hibernate配置文件(数据库连接信息)
<!--方言-->
<property name="dialect">
org.hibernate.dialect.Oracle10gDialect
</property>
<!--URL-->
<property name="connection.url">
jdbc:oracle:thin:@192.168.0.180:1521:ORCL
</property>
<!--用户名-->
<property name="connection.username">zs</property>
<!--密码-->
<property name="connection.password">a12345</property>
<!--驱动-->
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
三、编写orm对象和数据映射的映射文件
1、新建一个xml文件(basic类型),文件名:表名.hbm.xml

<hibernate-mapping>
<class name="com.test.entity.Student" table="STUDENT" schema="DINGOU">
<id name="sid" type="java.lang.Long">
<column name="SID" precision="11" scale="0" />
<generator class="sequence">
<param name="sequence">seq_student</param>
</generator>
</id>
<property name="sname" type="java.lang.String">
<column name="SNAME" length="50" />
</property>
<property name="age" type="java.lang.Integer">
<column name="AGE" precision="3" scale="0" />
</property>
<property name="birthday" type="java.util.Date">
<column name="BIRTHDAY" length="7" />
</property>
</class>
</hibernate-mapping>
四、使用Hibernate 进行(CRUD)
1 、Configuration:读取配置文件
SessionFactory:会话工厂
Session:会话
Transaction:事务
Query:HQL查询
Criteria:条件查询
2、使用Hibernate操作数据库
初始化配置文件,并读取配置文件信息
Configuration configuration = new Configuration().configure();
SessionFactory factory= configuration.buildSessionFactory();
// 开启会话
Session session = factory.openSession();
// 开启事务
Transaction transaction = session.beginTransaction();
// 保存数据
session.save(user);
//删除
session.delete(user);
//修改
session.saveOrUpdate(user);
// 提交事务
transaction.commit();
// 关闭会话
session.close();
五、hibernate的crud操作
1、session的get和load的区别
当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个代理对象,这个代理对象只保存了实体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象。
2、使用ajax返回json数据出现死循环:
因为Hibernate生成的类之间存在表和表之间的关系,有可能存在一对多,多对一或者多对多的关系,在使用json返回数据的时候会出现相互调用,导致死循环报错的情况。
解决方案:
①如果返回的数据中,不需要存在关联关系的变量,可以写一个不包含存在关联关系的构造方法,然后讲数据存放在没有关联关系的实例或者集合中,返回页面。
②使用本地sql session.createSQLQuery(); 的方式访问数据库取得数据,这样取得的对象不会存在死循环的情况。(推荐)

浙公网安备 33010602011771号