• Hibernate基础


    Hibernate框架

    ORM

    1.ORM概念

    O:Object 对象
    R:Relation 关系
    M:Mapping 映射
    ORM:对象关系映射

    2.ORM解决什么问题?

    存储:能否把对象的数据直接保存到数据库?
    获取:能否直接从数据库拿到一个对象?
    想做上面两点,必须有映射!

    3.Hibernate与ORM的关系?

    Hibernate是ORM的实现

    Hibernate Hello World案例

    1.搭建一个Hibernate环境,开发步骤:

    1.下载源码。版本:hibernate-distribution-3.6.0.Final 下载链接: (提取码:1a98)
    2.引入jar文件:hibernate3.jar核心 + required 必须引入的(6个)+ jpa目录 + 数据库驱动包
    3.写对象以及对象的映射。Employee.java(对象) Employee.hbm.xml(对象的映射)
    4.新建src/hibernate.cfg.xml:数据库连接配置;加载所有配置文件

    2.代码案例

    1.Employee.java

    import java.util.Date;
    
    /**
     * 一.对象
     * Created by qianxingzhe on 16/2/13.
     */
    public class Employee {
        private int empId;
        private String empName;
        private Date workDate;
    
        public int getEmpId() {
            return empId;
        }
    
        public void setEmpId(int empId) {
            this.empId = empId;
        }
    
        public String getEmpName() {
            return empName;
        }
    
        public void setEmpName(String empName) {
            this.empName = empName;
        }
    
        public Date getWorkDate() {
            return workDate;
        }
    
        public void setWorkDate(Date workDate) {
            this.workDate = workDate;
        }
    }
    

    2.Employee.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping
            package="com.yly.a_hello">
    
        <class name="Employee" table="employee">
            <!-- 主键,映射 -->
            <id name="empId" column="id">
                <generator class="increment"/>
            </id>
    
            <!-- 非主键映射 -->
            <property name="empName" column="empName"/>
            <property name="workDate" column="workDate"/>
        </class>
    
    </hibernate-mapping>
    
    

    3.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节点代表一个数据库 -->
        <session-factory>
    
            <!-- 1. 数据库连接配置 -->
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <!-- 防止出现插入MySQL数据库中文乱码,加上useUnicode=true&characterEncoding=utf8 -->
            <property name="hibernate.connection.url">
                <![CDATA[jdbc:mysql:///hib_demo?useUnicode=true&characterEncoding=utf8]]>
            </property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">123</property>
            <!--
                数据库方法配置, hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql
             -->
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    
    
            <!-- 2. 其他相关配置 -->
            <!-- 2.1 显示hibernate在运行时候执行的sql语句 -->
            <property name="hibernate.show_sql">true</property>
            <!-- 2.2 格式化sql -->
            <property name="hibernate.format_sql">true</property>
            <!-- 2.3 自动建表  -->
            <property name="hibernate.hbm2ddl.auto">update</property>
    
    
            <!-- 3. 加载所有映射-->
            <mapping resource="com/yly/a_hello/Employee.hbm.xml"/>
    
        </session-factory>
    </hibernate-configuration>
    

    4.App.java

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.junit.Test;
    
    import java.util.Date;
    
    /**
     * Created by qianxingzhe on 16/2/13.
     */
    public class App {
        private static SessionFactory sf;
    
        static {
            //1.创建配置管理类对象
            Configuration config = new Configuration();
            //加载配置文件(默认加载src/hibernate.cfg.xml)
            config.configure();
            //2.根据加载的配置管理类对象,创建SessionFactory对象
            sf = config.buildSessionFactory();
        }
    
        @Test
        public void testHello() throws Exception {
            //对象
            Employee emp = new Employee();
            emp.setEmpName("aa");
            emp.setWorkDate(new Date());
    
            //3.根据Session的工厂,创建session对象
            Session session = sf.openSession();
            //开启事物
            Transaction ts = session.beginTransaction();
            //保存-数据库
            session.save(emp);
            session.update(emp);
            //提交事务
            ts.commit();
            //关闭
            session.close();
            sf.close();
        }
    }
    
  • 相关阅读:
    关于asp.net中Repeater控件的一些应用
    Linux查看程序端口占用情况
    php 验证身份证有效性,根据国家标准GB 11643-1999 15位和18位通用
    给Nginx配置一个自签名的SSL证书
    让你提升命令行效率的 Bash 快捷键 [完整版]
    关系数据库常用SQL语句语法大全
    php 跨域 form提交 2种方法
    Vimium~让您的Chrome起飞
    vim tab设置为4个空格
    CENTOS 搭建SVN服务器(附自动部署到远程WEB)
  • 原文地址:https://www.cnblogs.com/FlySheep/p/5451072.html
Copyright © 2020-2023  润新知