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

    小配置里的代码

    <?xml version='1.0'  encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="cn.happy.entity">
        <class name="Dog" table="Dog" >
            <id name="dogid" column="dogid">
                <generator class="native"></generator>//id主键  自增
            </id>
            <property name="dogname" column="dogname"></property>
            <property name="dogage" column="dogage" ></property>
        </class>
    
    </hibernate-mapping>
    

      实体类

    /**
     * Created by lgy on 2017/9/18.
     */
    public class Dog {
        private String dogname;
        private Integer dogage;
        private Integer dogid;
    
        public String getDogname() {
            return dogname;
        }
    
        public void setDogname(String dogname) {
            this.dogname = dogname;
        }
    
        public Integer getDogage() {
            return dogage;
        }
    
        public void setDogage(Integer dogage) {
            this.dogage = dogage;
        }
    
        public Integer getDogid() {
            return dogid;
        }
    
        public void setDogid(Integer dogid) {
            this.dogid = dogid;
        }
    }
    

      util:

    public class HibernateUntil {
        private static Configuration cfg=new Configuration().configure();
        private static SessionFactory factory=cfg.buildSessionFactory();
    
        //1.方法返回session  静态成员变量不能直接使用非静态成员
        //Session依赖于Session工厂,工厂依赖于Configure
        public static Session getSession(){
            return factory.openSession();
    
        }
        //2.关闭session
        public static void closeSession(){
            getSession().close();
        
    

      大配置:

    <?xml version='1.0' encoding='utf-8'?>
    <!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="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
            <!--数据库url-->
            <property name="connection.url" >jdbc:oracle:thin:@localhost:1521:orcl</property>
            <!--数据库username-->
            <property name="connection.username" >test</property>
            <!--数据库password-->
            <property name="connection.password" >test</property>
            <!--hibernate方言--><!--和Spring整合时name属性前S必须加hibernate,单独用hibernate框架时,name属性可以直接用dialect-->
            <property name="hibernate.dialect" >org.hibernate.dialect.Oracle10gDialect</property>
            <!--输出所有语句到控制台-->
            <property name="hirbernate.show_sql" >true</property>
            <!--在log和console中打印出更新   格式化显示sql-->
            <property name="hibernate.format_sql" >true</property>
            <!--hbm2ddl就是**.hbm.xml,生成特定数据库的sql   从程序中自动建表 updata表示如果底层存在表,name更新表结构 -->
            <property name="hibernate.hbm2ddl.auto" >update</property>
            <!--指定当前session范围和上下文  thread至当前线程用来跟踪管理-->
            <property name="current_session_context_class" >thread</property>
            <mapping resource="cn/happy/entity/Dog.hbm.xml" ></mapping>
        </session-factory>
    </hibernate-configuration>
    

      Test测试类:

    @Test
        public void testhibernate() {
            //configuration
            Configuration cfg=new Configuration().configure();
            SessionFactory factory=cfg.buildSessionFactory();
            Session session=factory.openSession();
            Transaction tx=session.beginTransaction();
            Dog dog=new Dog();
            dog.setDogname("小白");
            session.save(dog);
            tx.commit();
            System.out.println("add ok!");
            session.close();
    }

      

    //用get方法查询数据库
    @Test
    private void findStudent() {
    //02Hibernate 保存
    //读取大配置文件,获取连接的数据库信息
    Configuration cfg=new Configuration().configure();
    //3创建SessionFactory
    SessionFactory factory=cfg.buildSessionFactory();
    //加工session
    Session session=factory.openSession();
    //开启事务
    Transaction tx=session.beginTransaction();
    //5Hibernate
    //根据session的方法做数据操作 检索
    Student student=session.get(Student.class,2);
    System.out.println(student.getName());
    //提交事务
    tx.commit();
    //关闭session
    session.close();
    System.out.println("success ok");
    }
    //用load方法查询
        @Test
        public void update2(){
            Configuration cfg=new Configuration().configure();
            SessionFactory factory=cfg.buildSessionFactory();
            Session session=factory.openSession();
            Transaction tx=session.beginTransaction();
            Dog dog=session.load(Dog.class,1);
            System.out.println("load-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
            System.out.println(dog.getDogname());
        }
    

      load方法:

      

    无论get方法查询,还是load方法,都要开启事务,也不要手动提交!!!

  • 相关阅读:
    Python全栈 MySQL 数据库 (表字段增、删、改、查、函数)
    Python全栈 MySQL 数据库 (简述 、安装、基本命令)
    Python全栈工程师(异常(高级)、运算符重载)
    Python全栈工程师(多继承、函数重写)
    【洛谷P3796】(模板)AC自动机(加强版)
    【洛谷P3808】(模板)AC自动机(简单版)
    【洛谷P3919】(模板)可持久化数组(可持久化线段树/平衡树)
    【洛谷P3834】(模板)可持久化线段树 1(主席树)
    【洛谷P3369】(模板)普通平衡树
    [USACO12FEB]牛券Cow Coupons
  • 原文地址:https://www.cnblogs.com/s1297-lgy/p/7545708.html
Copyright © 2011-2022 走看看