Hibernate+javabean+mysql的简单案例

来源:互联网 发布:c语言产生随机数 编辑:程序博客网 时间:2024/06/06 03:08

1.Hibernate的概念:

  它是一种完全面向对象的orm(对象关系映射)框架中的佼佼者,因为其完全面向对象和他的轻量级操作使得hibernate在java中的地位非常高,但是又由于它的完全面向对象使其操作相对于mybites来说更为复杂。

2.hibernate + javabean + mysql简单案例          

2.1开发步骤:hibernate 所需jar包



2.2.设计数据库

账户,密码,id。  让id作为主键并且唯一的递增的。

create table(

       id int primary key,

      username   varchar(50),

      pwd   varchar(50)

)

写表名,字段名时,千万要注意别和数据库里面已经定义好的名字重名。否则会出现:

could not insert: [org.sf520.actions.user.News]异常详细查:http://www.cnblogs.com/IT-BOY/p/3517923.html


2.3 设计javabean对象

public class admin_javabean {
    
    private int id;
    private String username;
    private int pwd;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public int getPwd() {
        return pwd;
    }
    public void setPwd(int pwd) {
        this.pwd = pwd;
    }
}


2.4 为该javabean对象配置上hibernate特有的xml文件(hibernate的秘制酱料,个人记得这才是核心,哈哈)

<?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="javabean">该package是javabean对象所在包的名字
    
    <class name="admin_javabean" table="username">该name是javabean对象本人,而table是连接了数据库的表,如果你在hibernate总配置文件中没有写上自动创表,也就是这个<property name="hibernate.hbm2ddl.auto">update</property>自动创表类型有四种,update:当没有时则创建;create:这个是无论数据库总是否有该表或者字段都得重新创建(这个是好像是刚上台的官员,前任官员做的我不认,我都得重新做),create-dorp:当关闭掉了sessionFactory时,里面的表就没有了(相当于打单机游戏没有保存)
        
        <!-- 主键 ,映射-->
        <id name="id" column="id">
            <generator class="native"/>
        </id>
        
        <!-- 非主键,映射 -->
        <property name="username" column="username"></property>
        <property name="pwd" column="pwd"></property>
        
    主键映射和非主键映射是关于数据库中字段和javabean之间搭建一座桥梁。
        
    </class>
</hibernate-mapping>


注意:javabean对象的配置文件必须和javabean对象同名。 例如下图所示(admin_javabean.java和admin.hbm.xml),否则会出现    org.hibernate.MappingNotFoundException: resource: javabean/admin.hbm.xml not found (文件找不到)



2.5  配置hibernate总文件

<!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>
        <property name="hibernate.connection.url">jdbc:mysql:///hib_demo</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">samlin123</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>
        
        
        
        <mapping resource="javabean/admin.hbm.xml"/>
        
    </session-factory>
</hibernate-configuration>


总配置文件是java文件和数据库之间的桥梁。(包括数据库地址 端口  账户 密码  数据库语言 采用哪种建表方式等等)

2.6 写上测试类app

package javabean;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;

public class app {
    @Test
    public void test() throws Exception{
        admin_javabean ad = new admin_javabean();
        ad.setId(1);
        ad.setPwd(151515);
        ad.setUsername("sam");
    
    


        Configuration conf = new  Configuration();
        conf.configure();
        SessionFactory sf = conf.buildSessionFactory();
        Session session = sf.openSession();
        Transaction tx = session.beginTransaction();
        session.save(ad);
        tx.commit();
        sf.close();
        session.close();
    }
}

写测试类的时候,实际就是运用hibernate过程。

1.获取configuration对象,打开configuration对象的configure方法(此方法是获取总配置文件)

2.创建sessionfactory对象,打开sessionfactory里的session资源,用session资源打开transaction。

3.以上步骤是为了用session一级缓存保存Javabean里面的数据,然后提交到数据库。



以上hibernate案例总结:

      这是一个hibernate简单的案例,从这里面可以看出hibernate的一些特性,首先他比jdbc技术更加简单,而且更加java化,从以上写法来看,它没有一丢丢的mysql语法,而jdbc则是有大量的mysql语法,例如:String sql="insert into sam (name,pwd)values(?,?)";之类的mysql语法。所以在改动代码方面hibernate相对简单,耦合性好,对后期维护提供有利条件。



0 0
原创粉丝点击