hibernate4简单配置

核心步骤:

1) 导入jar包

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

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

4) 操作数据

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

1、将hibernate的jar包导入lib下

    必须要导入的jar包有:

                              lib\required文件夹下

   数据库方面的jar包有:

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

                ojdbc6.jar(oracle)

   连接池(可选):

                lib\optional\c3p0文件夹下

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;

 

 

posted @ 2014-04-25 12:46  gowork  Views(331)  Comments(0Edit  收藏  举报