Hibernate环境搭建_ALL

1、新建java项目
 
2、创建User Library,加入如下jar
    * HIBERNATE_HOME/hibernate3.jar
    * HIBERNATE_HOME/lib/*.jar
    * MySql jdbc驱动
    
3、在根目录下,创建hibernate配置文件hibernate.cfg.xml,加入log4j配置文件(log4j.properties)

 

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate_first</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">bjsxt</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.show_sql">true</property>
        //为了方便跟踪sql执行,在hibernate.cfg.xml文件中加入
        <property name="hibernate.show_sql">true</property>
    </session-factory>
</hibernate-configuration>
4、定义实体类

 

public class User {
    private String id;    
    private String name;
    private Date createTime;
 
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    ........
}
5、定义User类的映射文件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>
    <class name="com.swpu.hibernate.User">
        <id name="id">
            <generator class="uuid"/>
        </id>
        <property name="name"/>
        <property name="createTime"/>
    </class>
</hibernate-mapping>
6、将User.hbml.xml文件加入到hibernate.cfg.xml文件中(注意resource属性中填写的是文件路径)

 

<session-factory>
        ...... 
        <mapping resource="com/swpu/hibernate/User.hbm.xml"/>
       ......
</session-factory>
7、编写hbm2ddl工具类,将实体类生成数据库表

 

    public class ExportDB {
 
    public static void main(String[] args) {
        
        //读取hibernate.cfg.xml文件
        Configuration cfg = new Configuration().configure();
        
        SchemaExport export = new SchemaExport(cfg);
        
        export.create(true, true);
    }
}
8、开发客户端
 
************************************************************
 
我的环境是:eclipse 、mysql数据库。
 
一:先创建一个普通的java项目。
 
步骤:File→new→Project 。如果直接看不到Project 就选择Other →General→Project
在project name处输入项目名字。其他选项根据需要填写。
 
二:导入hibernate需要的包。
 
     所需要的包:<!--StartFragment -->
<!--StartFragment -->
      hibernate3.jar
      ejb3-persistence.jar
      antlr-2.7.6.jar
      commons-collections-3.1.jar
      dom4j-1.6.1.jar
      javassist-3.12.0.GA.jar
      jta-1.1.jar
      slf4j-api-1.6.1.jar
步骤:点击项目名称右键→Propertise(最后一个属性)→ Java Build Path →Libraries →Add External JARs...
         找到你的包就可以了。
 
三:导入数据库驱动。
     根据你使用的什么数据库导入什么样的驱动。我这里所用的是mysql
步骤同导入hibernate包一样。
 
四:hibernate的配置文件。
        hibernate.cfg.xml
 
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>  
<!-- sessionFactory -->  
      <session-factory>  
            <!--配置数据库驱动类 -->  
           <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
            <!--数据库连接的url ,最后要跟数据库的名称-->  
           <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/school</property>  
            <!--数据库账号 -->  
           <property name="hibernate.connection.username">root</property>  
            <!--数据库密码 -->  
           <property name="hibernate.connection.password">root</property>  
            <!--数据库方言-->  
           <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  
           <!--<property name="hibernate.hbm2ddl.auto">create</property>-->  
  
           <property name="hibernate.show_sql">true</property>  
             
            <!-- 映射实体类配置文件 -->  
           <mapping resource="com/coney/school/model/Teacher.hbm.xml"/>  
  
      </session-factory>  
</hibernate-configuration>  
   
 
在这里的时候遇到一个问题:
在我搭建好环境后。测试时,往数据库里面添加数据。每次添加一条都会覆盖原来的数据。。
并且,本来设置好的自动增长列也会自动给取消。刚开始还以为是我每次都添加的一条记录标识列没有自动添加上去。
现在找到根本原因了。。
原因就是在这个配置文件里面
<!--<property name="hibernate.hbm2ddl.auto">create</property>-->
这句。现在注释掉就可以正常添加了。不会覆盖原来的数据。
这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构
详细介绍请看这:
http://run-wang.iteye.com/blog/1323223
五:创建实体类并封装好。
实体类代码  

 

public class Teacher {  
  
    private Long tid;  
    private String tname;  
    private String tpwd;  
    private String tclass;  
    private String tschool;  
            //  此处省略掉 get...set...方法  
}  
 在建这个实体类的时候也出过一个问题,就是命名不对。
刚开始的时候我的属性名是叫‘tId ,tName.....’ 然后自动生成get。set方法出来。
getTId ,setTId 。。在启动服务器的时候报错说找不到Teacher类的tId 这个属性。
看着命名有点怪怪的就怀疑会不会是命名的问题。然后就把tId该成了tid 再生成get。set方法。
然后就没报错了。。问题是解决了。。可就是不知道原因是什么。。汗。。。
六:创建实体类的配置文件。(在这里使用的是配置文件来映射实体类。同样也可以用注解来影射)
     Teacher.hbm.xml
建好后在hibernate.cfg.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.coney.school.model"> <!--  实体类包 -->  
  
<class name="Teacher" table="teacher"> <!-- name对应实体类名称, table 对应数据库表名 -->  
    <!-- ID name 对应实体类字段,column 数据库表字段-->  
    <id name="tid" type="java.lang.Long" ><!--type :java类型-->  
        <column name="tid"  ><!--column 数据库表字段 not-null:不为空 ,length:长度,default:默认值-->  
            <comment>表ID</comment><!-- 注释 -->  
        </column>  
        <generator class="increment"/> <!--序列生成器, 字段增长 -->  
    </id>  
    <!--其他字段基本上一样,name 实体类字段,column 数据库表字段,length 长度,not-null 不为空 -->  
    <property name="tname" column="tName" length="20" not-null="true"></property>  
    <property name="tpwd" column="tPwd"  length="20" not-null="true"></property>  
    <property name="tclass" column="tClass"  length="20" not-null="true"></property>  
    <property name="tschool" column="tSchool"  length="20" not-null="true"></property>  
</class>  
  
</hibernate-mapping>  
 
七:测试
      建一个测试类。测试连接数据库。并往表里面添加数据。
测试类代码  

 

package com.coney.school.test;  
    
import org.hibernate.*;   
import org.hibernate.cfg.Configuration;  
import com.coney.school.model.Teacher;  
  
public class TestConn {  
     public static void main(String[] args){   
     Configuration config = new Configuration().configure("hibernate.cfg.xml");  //调用hibernate配置文件,读取配置文件信息。  
     SessionFactory sf = config.buildSessionFactory();   //读完之后,再用这个对象来生成一个SessionFactory  
     Session session = sf.openSession();    
     Transaction tx = session.beginTransaction();    
     tx.begin();  //有了SessionFactory就可以开Session了,可以用事务提交了.  
     Teacher m = new Teacher();     
     m.setTname("小小");  
     m.setTpwd("xx");  
     m.setTclass("小班");  
     m.setTschool("翠花幼儿园");  
     session.save(m);  
     tx.commit(); //提交  
  
  }     
  
}  
 
然后去数据里看是否添加成功哦。
大概就这样了。。当做笔记。。下次不清楚的时候可以来回忆回忆。。嘿嘿。。
额。把需要的包。。放在附件里面吧。
在驱动包里面顺便把sqlserver的驱动包也放进去了。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值