zoukankan      html  css  js  c++  java
  • Hibernate初级

    文章来源: http://blog.csdn.net/jiuqiyuliang/article/details/39078749/

    持久化(Persistence),把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

    Hibernate是对JDBC进一步封装

    是持久层的框架

    Hibernate是开源的一个ORM(对象关系映射)框架:

    ORM,即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(把关系数据库的字段在内存中映射成对象的属性)。


    Hibernate六大核心接口,两个主要配置文件,以及他们直接的关系。

    1、Configuration接口:负责配置并启动Hibernate

    2、SessionFactory接口:负责初始化Hibernate

    3、Session接口:负责持久化对象的CRUD操作

    4、Transaction接口:负责事务

    5、Query接口和Criteria接口:负责执行各种数据库查询

    注意:Configuration实例是一个启动期间的对象,一旦SessionFactory创建完成它就被丢弃了。

     实例项目:

    User.java

    package com.kangjie.User;
    
    
    import java.util.Date;  
    
    public class User {  
        private String id;  
        private String name;  
        private String password;  
        private Date createTime;  
        private Date expireTime;  
          
        public String getId() {  
            return id;  
        }  
        public void setId(String id) {  
            this.id = id;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public String getPassword() {  
            return password;  
        }  
        public void setPassword(String password) {  
            this.password = password;  
        }  
        public Date getCreateTime() {  
            return createTime;  
        }  
        public void setCreateTime(Date createTime) {  
            this.createTime = createTime;  
        }  
        public Date getExpireTime() {  
            return expireTime;  
        }  
        public void setExpireTime(Date expireTime) {  
            this.expireTime = expireTime;  
        }
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", password=" + password
                    + ", createTime=" + createTime + ", expireTime=" + expireTime
                    + "]";
        }  
      
    } 

    App.java

    package com.kangjie.User;
    
    import java.util.Date;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.junit.Test;
    
    public class App {
    
        private static SessionFactory sessionFactory;
    
        static {
            Configuration cfg = new Configuration();
            cfg.configure("hibernate.cfg.xml"); // 读取指定的主配置文件
            sessionFactory = cfg.buildSessionFactory(); // 生成Session工厂
        }
    
        @Test
        public void testSave() throws Exception {
            User user = new User();
            user.setName("jiuqiyuliang");  
            user.setPassword("123456");  
            user.setCreateTime(new Date());  
            user.setExpireTime(new Date()); 
    
            Session session = sessionFactory.openSession(); //打开一个新的Session
            Transaction tx = session.beginTransaction(); // 开始事务
    
            session.save(user);
    
            tx.commit(); //提交事务
            session.close(); // 提交事务
        }

    User.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="com.kangjie.User">
        
        <class name="User" table="User">
            <id name="id">  
                <!-- 算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID -->  
                <generator class="uuid"></generator>  
            </id>  
            <property name="name"></property>  
            <property name="password"></property>  
            <property name="createTime" type="date"></property>  
            <property name="expireTime" type="date"></property> 
        </class>
        
    </hibernate-mapping>

    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 name="foo">
            <!-- 配置数据库信息 --> 
            <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="connection.url">jdbc:mysql://139.196.170.62:3307/mysite</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.username">kangjie</property>
            <property name="hibernate.connection.password">Kangjie_456</property>
    
            <!-- 其他配置 -->
            <property name="hibernate.show_sql">true</property>
            <!-- 
            <property name="hibernate.format_sql">false</property>
            
                create:先删除,再创建
                update:如果表不存在就创建,不一样就更新,一样就什么都不做。
                create-drop:初始化时创建表,SessionFactory执行close()时删除表。
                validate:验证表结构是否一致,如果不一致,就抛异常。
             
            <property name="hbm2ddl.auto">update</property>
        -->
        
            <!-- 导入映射文件 -->
            <mapping resource="com/kangjie/User/User.hbm.xml"/>
    
        </session-factory>
    </hibernate-configuration>
  • 相关阅读:
    Nginx日志切割
    Spring Cloud Alibaba基础教程:Nacos+Dubbo
    Spring Cloud Alibaba基础教程:Sentinel
    Gogs+Drone搭建CI/CD平台
    Spring事件机制
    OpenGL 安装
    Melkman's Algorithm
    Tools: python 安装
    Tools: windbg 使用指南
    Tools: java安装指南
  • 原文地址:https://www.cnblogs.com/taiguyiba/p/6219457.html
Copyright © 2011-2022 走看看