为了账号安全,请及时绑定邮箱和手机立即绑定

我的hibernate学习记录

标签:
Java
  1. 导入相关jar包
  2. 创建实体类,实体类要有一个唯一标识
  3. 在实体类所在的包创建后缀名为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>
  4. 在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>
  1. 创建测试类
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>
点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消