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>
  • 相关阅读:
    是否需要代码规范
    上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些?各有什么优缺点?
    作业二--------个人编程项目:四则运算。
    学习进度总结————王烁130201218
    作业一:建立博客、自我介绍、速读教材、学习进度总结
    论实习之后的感悟
    作业九 ——报告及总结
    作业四: 结对编程项目---四则运算
    代码复审
    PSP记录个人项目耗时情况
  • 原文地址:https://www.cnblogs.com/taiguyiba/p/6219457.html
Copyright © 2011-2022 走看看