• hibernate4简单配置


    核心步骤:

    1) 导入jar包

    2) 创建hibernate.cfg.xml配置文件

    3) 创建对象类及类和表的映射文件

    4) 操作数据

    hibernate项目结构图(当前版本为4.3.5),(我建的是一个web project,当然也可以建java project或是maven项目)

    1、将hibernate的jar包导入lib下

        必须要导入的jar包有:

                                  lib equired文件夹下

       数据库方面的jar包有:

                    mysql-connector-java-5.1.7-bin.jar(mysql)

                    ojdbc6.jar(oracle)

       连接池(可选):

                    liboptionalc3p0文件夹下

    2、在项目的src下新建hibernate.cfg.xml该文件为hibernate的主要配置,文件名默认是hibernate.cfg.xml,也可以改用其他,在调用时要注意

    <?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>
         <!-- 1.数据库连接信息 -->
         <!-- MYSQL -->
         <!-- 
         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
         <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
         <property name="connection.username">root</property>
         <property name="connection.password"></property>
         -->
         <!-- oracle -->
        <property name="connection.url">jdbc:oracle:thin:@192.168.8.10:1521:ora9i2</property> 
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
        <property name="connection.username">ZC</property>     
        <property name="connection.password">ZC</property>    
    
        <!-- 2.Hibernate配置信息 -->    
    
        <!-- dialect是方言,用于配置生成针对那个数据库的SQL语句 -->    
        <!-- Hibernate提供的方言类,用于封装某种特定数据库方言 -->    
        <!-- MYSQL -->    
        <!--     
        <property name="dialect">    
        org.hibernate.dialect.MySQL5Dialect
        </property>    
         -->    
        <!-- ORACLE -->    
        <property name="dialect">    
        org.hibernate.dialect.Oracle9Dialect
        </property>
        <!-- 确保session上下文可以正常使用 -->
        <property name="current_session_context_class">thread</property>
        <!-- 将执行sql打印到控制台,一般用于sql调优 -->
        <property name="show_sql">true</property>
        <property name="hibernate.format_sql ">true</property>     
    
        <!-- 3.在配置文件中关联映射文件 -->    
        <mapping resource="po/User.hbm.xml"/>    
        <mapping resource="po/Emp.hbm.xml"/>    
    </session-factory>    
    </hibernate-configuration>

    3、新建与数据库中表对应的POJO类(下面以User为例)

    package po;    
    
    public class User {    
        private Integer id;        //userID
        private String loginName;  //登录名    
        private String password;   //密码    
        private String name;       //姓名    
        public Integer getId() {    
            return id;
        }    
        public void setId(Integer id) {    
            this.id = id;
        }    
        public String getLoginName() {    
            return loginName;
        }    
        public void setLoginName(String loginName) {    
            this.loginName = loginName;
        }    
        public String getPassword() {    
            return password;
        }    
        public void setPassword(String password) {    
            this.password = password;
        }    
        public String getName() {    
            return name;
        }    
        public void setName(String name) {    
            this.name = name;
        }    
    
    }

    4、新建映射文件User.hbm.xml,映射文件默认与POJO类放在一起;命名规则为类名.hbm.xml

    <?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>                
        <class name="po.User" table="t_user">            
            <id name="id" type="java.lang.Integer" column="t_id">        
                <!-- generator用来指明主键生成方式 -->    
                <!-- MYSQL为identity -->    
                <!-- <generator class="identity"></generator> -->    
                <!-- ORACLE 为sequence-->    
                <generator class="sequence">    
                    <param name="sequence">t_id</param>
                </generator>    
                            <!--  不确定就写native 不论MYSQL还是ORACLE,下面的写法都不会错 -->    
                           <!--     
                <generator class="native">    
                                <param name="sequence">t_id</param>
                </generator>
                -->
            </id>    
            <property name="loginName" column="t_login_name"></property>    
            <property name="password" column="t_password"></property>    
            <property name="name" column="t_name"></property>    
        </class>         
    </hibernate-mapping>

    5、向数据库中插入、删除、更新、查询数据

      5.1 工具类

    public class HibernateUtil {            
        private static Configuration conf;        
        private static SessionFactory factory;        
        //conf只需要加載一次就可以了,如果放入openSession方法中效率會很低        
        static{        
            conf=new Configuration().configure();    
            //以前的版本获取sessionFactory的方式    
            //factory = conf.buildSessionFactory();
            //现在获取的方式
            factory = conf.buildSessionFactory(new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build());
        }    
        /**    
         * 每个用户对应一个session,但SessionFactory是共享的    
         * @return    
         */    
        public static Session openSession(){    
            return factory.openSession();
        }    
    }

      5.2 测试类

    public class TestHibernate {        
        /**    
         * 将一个对象存入数据库    
         */    
        //@Test    
        public void test1(){    
            //1 创建一个User对象
            User user = new User();
            user.setLoginName("hibernate");
            user.setName("man");
            user.setPassword("12345");
            Session session = HibernateUtil.openSession();
            //6.获取事务
            Transaction tx = session.getTransaction();
            //6.1 开启事务
            tx.begin();
            //6.2插入数据
            session.save(user);
            //6.3提交事务
            tx.commit();
    
            //7.关闭session
            session.close();
        }    
        /**    
         *将数据库中某个值删除     
         */    
        //@Test    
        public void test2(){    
            Session session = HibernateUtil.openSession();
            //1 创建一个User对象
            User user = new User();
            user.setId(1);
            //2获取并开启事务
            Transaction tx = session.beginTransaction();
            //3删除用户
            session.delete(user);
            //4提交事务并关闭session
            tx.commit();
            session.close();
        }    
        /**    
         * 更新数据    
         */    
        //@Test    
        public void test3(){    
            User user = new User();
            user.setId(3);
            user.setLoginName("struts2");
            user.setName("women");
            user.setPassword("123456");
            Session session = HibernateUtil.openSession();
            Transaction tx = session.beginTransaction();
            session.update(user);
            tx.commit();
            session.close();
    
        }    
        /**    
         * 查询    
         */    
        //@Test    
        public void test4(){    
            Session session = HibernateUtil.openSession();
            //HQL--Hibernate提供的是面向对象的查询语句注意User要与类User名对应
            Query query = session.createQuery("from User");
            @SuppressWarnings("unchecked")
            List<User> users = query.list();
            for (User user : users) {            
                System.out.println(        
                        user.getId()+","+
                        user.getLoginName()+","+
                        user.getPassword()+","+
                        user.getName());
            }            
            session.close();            
        }                
    }

    6、SQL脚本文件

      oracle 

    --创建序列            
    create sequence t_id              
      start with 1             
      increment by 1;            
    --创建user表            
    create table t_user(    
        t_id number(11) not null,
        t_login_name varchar(50),
        t_password varchar(50),
        t_name varchar(100),
        primary key(t_id)
    );

      mysql

    /**    
     * 在MYSQL中注释是#或/***/,在oracle中是--    
    */    
    #如果表存在就删除表    
    drop table if exists t_user;    
    #新建user表    
    create table t_user(    
    t_id int(11) not null auto_increment,    
    t_login_name varchar(50) default null,    
    t_password varchar(50) default null,
    t_name varchar(100) default null,
    primary key(t_id)
    )ENGINE=InnoDB;
  • 相关阅读:
    达到XML简单的动态配置
    初步swift语言学习笔记9(OC与Swift杂)
    【COCOS2DX-对28游戏开发】 Cocos2d-x-3c 道路设计 CocosBase CocosNet CocosWidget
    无法识别的属性“targetFramework”。请注意属性名称区分大小写。
    IIS6.0服务器搭建网站无法访问解决方法
    IIS7授权错误:“无法验证对路径的访问”的解决方法
    如何在IIS6,7中部署ASP.NET网站
    IIS的安装与配置
    VS2010如何生成release文件
    发布网站
  • 原文地址:https://www.cnblogs.com/tombsky/p/3688502.html
Copyright © 2020-2023  润新知