- 导入相关jar包
- 创建实体类,实体类要有一个唯一标识
- 在实体类所在的包创建后缀名为hbm.xml的hibernate映射文件,导入头部约束:
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- name属性:实体类的完整类名 table属性:实体类对应的表名 --> <class name="com.melon.entity.User" table="user_list"> <!-- id标签表示唯一标识 name属性:实体类中的命名 column属性:数据表中字段名 --> <id name="id" column="id"> <!-- class属性:native代表自动增长 --> <generator class="native"></generator> </id> <!-- 实体类其余成员变量 --> <property name="name" column="name"></property> <property name="password" column="password"></property> </class> </hibernate-mapping>
- 在src目录下创建名为hibernate.cfg.xml的配置文件
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 连接数据库的配置 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1</property>
<!-- 在控制台输出sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="hibernate.format_sql">true</property>
<!-- 如果表不存在即创建,如果存在即更新 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 映射文件配置 -->
<mapping resource="com/melon/entity/user.hbm.xml"/>
</session-factory>
</hibernate-configuration>
- 创建测试类
public class HibernateDemo1 {
@Test
public void Update() {
//加载hibernate核心配置文件
Configuration cfg = new Configuration();
cfg.configure();
//创建sessionFactory对象
SessionFactory sessionFactory = cfg.buildSessionFactory();
//使用sessionFactory对象创建session对象
Session session = sessionFactory.openSession();
//开启事务
Transaction ts = session.beginTransaction();
//具体增删改查操作
User user = new User();
user.setName("melon");
user.setPassword("1");
//调用session对象的对应方法
session.save(user);
//提交事务
ts.commit();
//关闭资源
session.close();
sessionFactory.close();
}
}
测试完成
-
hibernate中对象的三种状态:瞬时态、持久态、托管态。
瞬时态:新new出来的对象,在数据库没有id值,和session没有关联
持久态:对象已经存放到数据库里边,和session有关联
托管态:对象有id值,和session没有关联hibernate存在一级缓存,当第一次在数据库查询到信息后,自动存放到缓存当中,之后再查询直接从缓存获取到相关信息
持久态会自动更新数据库,不用调用update方法。
- 获得与本地绑定的session
(1)在hibernate核心配置文件中配置
<property name="hibernate.curren_session_context_class">thread</property>
(2)调用sessionFactory里面的getCurrentSession方法获得与本地线程绑定的session
Session session = sessionFactort.getCurrenSession();
hibernate配置一对多关系
<!--
父表配置
set标签里面name属性写对应子表的set名称
cascade属性填sava-update,delete代表级联保存、删除
-->
<set name="itemSet" cascade="save-update,delete" >
<!-- key标签里面column属性填子表的外键字段名 -->
<key column="orderId"></key>
<!-- one-to-many标签里面class属性填子表的类名全路径 -->
<one-to-many class=""/>
</set>
<!--
子表配置
name属性填实体类里面父表的对象名
class属性填父表对象的全路径
column属性填外键名称
-->
<many-to-one name="" class="" column=""></many-to-one>