Hibernate详解(一)------->>入门

 

       Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

       Hibernate的核心接口一共有5个,分别为:
Session、SessionFactory、Transaction、Query和 Configuration。这 5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

下面写一个最简单的案例(以学生类为例):

 

Student.java

 

Java代码 复制代码  收藏代码
  1. package cn.zxf.domain;   
  2.   
  3. import java.io.Serializable;   
  4.   
  5. public class Student implements Serializable{   
  6.   
  7.     /**  
  8.      *   
  9.      */  
  10.     private static final long serialVersionUID = 1L;   
  11.   
  12.     /** 学生的编号 */  
  13.     private int id;   
  14.     /** 学生的姓名 */  
  15.     private String name;   
  16.     /** 学生的班级 */  
  17.     private String classes;   
  18.     /** 学生的成绩*/  
  19.     private String score;   
  20.        
  21.        
  22.        
  23.     public Student() {   
  24.            
  25.     }   
  26.        
  27.     public Student(String name, String classes, String score) {   
  28.         this.name = name;   
  29.         this.classes = classes;   
  30.         this.score = score;   
  31.     }   
  32.   
  33.   
  34.   
  35.     public int getId() {   
  36.         return id;   
  37.     }   
  38.     public void setId(int id) {   
  39.         this.id = id;   
  40.     }   
  41.     public String getName() {   
  42.         return name;   
  43.     }   
  44.     public void setName(String name) {   
  45.         this.name = name;   
  46.     }   
  47.     public String getClasses() {   
  48.         return classes;   
  49.     }   
  50.     public void setClasses(String classes) {   
  51.         this.classes = classes;   
  52.     }   
  53.     public String getScore() {   
  54.         return score;   
  55.     }   
  56.     public void setScore(String score) {   
  57.         this.score = score;   
  58.     }   
  59.        
  60.        
  61. }  
package cn.zxf.domain;

import java.io.Serializable;

public class Student implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/** 学生的编号 */
	private int id;
	/** 学生的姓名 */
	private String name;
	/** 学生的班级 */
	private String classes;
	/** 学生的成绩*/
	private String score;
	
	
	
	public Student() {
		
	}
	
	public Student(String name, String classes, String score) {
		this.name = name;
		this.classes = classes;
		this.score = score;
	}



	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getClasses() {
		return classes;
	}
	public void setClasses(String classes) {
		this.classes = classes;
	}
	public String getScore() {
		return score;
	}
	public void setScore(String score) {
		this.score = score;
	}
	
	
}
 

 

Student.hbm.xml

Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3.                                    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
  4. <!-- Hibernate对象关系映射文件的根元素 -->   
  5. <hibernate-mapping>   
  6.  <!-- class元素用来定义一个持久化类及对应的数据库表 -->   
  7.  <class name="cn.zxf.domain.Student" table="student">   
  8.   <!--    
  9.         id元素:指定每个持久化类的唯一标识(即对象标识符OID)到数据库表主键字段的映射    
  10.         name属性:指定持久化类的OID名   
  11.         column属性:指定数据库表主键字段名。此属性的名和映射到数据库表的字段名相同时,可省略   
  12.         type属性:指定主键映射时所使用的Hibernate类型名。此属性的类型为基本数据类型和String类型时,可省略   
  13.         -->   
  14.   <id column="id" name="id" type="integer">   
  15.    <!-- generator元素:指定对象标识符的生成器名。   
  16.                      native生成器把对象标识符值的生成工作交由底层数据库来完成   
  17.           -->   
  18.    <generator class="native"/>   
  19.   </id>   
  20.    <property name="name"></property>   
  21.    <property name="classes"></property>   
  22.    <property name="score"></property>   
  23.   </class>   
  24. </hibernate-mapping>  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Hibernate对象关系映射文件的根元素 -->
<hibernate-mapping>
 <!-- class元素用来定义一个持久化类及对应的数据库表 -->
 <class name="cn.zxf.domain.Student" table="student">
  <!-- 
		id元素:指定每个持久化类的唯一标识(即对象标识符OID)到数据库表主键字段的映射 
		name属性:指定持久化类的OID名
		column属性:指定数据库表主键字段名。此属性的名和映射到数据库表的字段名相同时,可省略
		type属性:指定主键映射时所使用的Hibernate类型名。此属性的类型为基本数据类型和String类型时,可省略
		-->
  <id column="id" name="id" type="integer">
   <!-- generator元素:指定对象标识符的生成器名。
					 native生成器把对象标识符值的生成工作交由底层数据库来完成
		  -->
   <generator class="native"/>
  </id>
   <property name="name"></property>
   <property name="classes"></property>
   <property name="score"></property>
  </class>
</hibernate-mapping>
 

hibernate.cfg.xml

Xml代码 复制代码  收藏代码
  1. <?xml version='1.0' encoding='UTF-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC   
  3.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"   
  4.           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  5.   
  6. <!-- Generated by MyEclipse Hibernate Tools. -->  
  7. <hibernate-configuration>  
  8.   
  9.     <session-factory>  
  10.         <!-- SQL方言,这边设定的是MySQL -->    
  11.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.          <!-- JDBC驱动程序 -->    
  13.          <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  14.          <!-- JDBC URL -->    
  15.         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>  
  16.         <!-- 用户名 -->    
  17.         <property name="connection.username">root</property>  
  18.         <!-- 密码 -->    
  19.         <property name="connection.password">123</property>  
  20.            
  21.         <!-- 显示实际操作资料库时的SQL -->          
  22.         <property name="show_sql">true</property>  
  23.         <property name="format_sql">true</property>  
  24.         <property name="hibernate.hbm2ddl.auto">update</property>  
  25.            
  26.         <!-- 物件与资料库表格映射文件  -->    
  27.         <mapping resource="cn/zxf/domain/Student.hbm.xml"/>  
  28.     </session-factory>  
  29.        
  30.   
  31. </hibernate-configuration>  
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

    <session-factory>
		<!-- SQL方言,这边设定的是MySQL --> 
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		 <!-- JDBC驱动程序 --> 
		 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		 <!-- JDBC URL --> 
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
		<!-- 用户名 --> 
        <property name="connection.username">root</property>
		<!-- 密码 --> 
        <property name="connection.password">123</property>
        
		<!-- 显示实际操作资料库时的SQL --> 		
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
		
		<!-- 物件与资料库表格映射文件  --> 
        <mapping resource="cn/zxf/domain/Student.hbm.xml"/>
    </session-factory>
    

</hibernate-configuration>
 

 

       Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

       Hibernate的核心接口一共有5个,分别为:
Session、SessionFactory、Transaction、Query和 Configuration。这 5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

下面写一个最简单的案例(以学生类为例):

 

Student.java

 

Java代码 复制代码  收藏代码
  1. package cn.zxf.domain;   
  2.   
  3. import java.io.Serializable;   
  4.   
  5. public class Student implements Serializable{   
  6.   
  7.     /**  
  8.      *   
  9.      */  
  10.     private static final long serialVersionUID = 1L;   
  11.   
  12.     /** 学生的编号 */  
  13.     private int id;   
  14.     /** 学生的姓名 */  
  15.     private String name;   
  16.     /** 学生的班级 */  
  17.     private String classes;   
  18.     /** 学生的成绩*/  
  19.     private String score;   
  20.        
  21.        
  22.        
  23.     public Student() {   
  24.            
  25.     }   
  26.        
  27.     public Student(String name, String classes, String score) {   
  28.         this.name = name;   
  29.         this.classes = classes;   
  30.         this.score = score;   
  31.     }   
  32.   
  33.   
  34.   
  35.     public int getId() {   
  36.         return id;   
  37.     }   
  38.     public void setId(int id) {   
  39.         this.id = id;   
  40.     }   
  41.     public String getName() {   
  42.         return name;   
  43.     }   
  44.     public void setName(String name) {   
  45.         this.name = name;   
  46.     }   
  47.     public String getClasses() {   
  48.         return classes;   
  49.     }   
  50.     public void setClasses(String classes) {   
  51.         this.classes = classes;   
  52.     }   
  53.     public String getScore() {   
  54.         return score;   
  55.     }   
  56.     public void setScore(String score) {   
  57.         this.score = score;   
  58.     }   
  59.        
  60.        
  61. }  
package cn.zxf.domain;

import java.io.Serializable;

public class Student implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/** 学生的编号 */
	private int id;
	/** 学生的姓名 */
	private String name;
	/** 学生的班级 */
	private String classes;
	/** 学生的成绩*/
	private String score;
	
	
	
	public Student() {
		
	}
	
	public Student(String name, String classes, String score) {
		this.name = name;
		this.classes = classes;
		this.score = score;
	}



	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getClasses() {
		return classes;
	}
	public void setClasses(String classes) {
		this.classes = classes;
	}
	public String getScore() {
		return score;
	}
	public void setScore(String score) {
		this.score = score;
	}
	
	
}
 

 

Student.hbm.xml

Java代码 复制代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>   
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3.                                    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
  4. <!-- Hibernate对象关系映射文件的根元素 -->   
  5. <hibernate-mapping>   
  6.  <!-- class元素用来定义一个持久化类及对应的数据库表 -->   
  7.  <class name="cn.zxf.domain.Student" table="student">   
  8.   <!--    
  9.         id元素:指定每个持久化类的唯一标识(即对象标识符OID)到数据库表主键字段的映射    
  10.         name属性:指定持久化类的OID名   
  11.         column属性:指定数据库表主键字段名。此属性的名和映射到数据库表的字段名相同时,可省略   
  12.         type属性:指定主键映射时所使用的Hibernate类型名。此属性的类型为基本数据类型和String类型时,可省略   
  13.         -->   
  14.   <id column="id" name="id" type="integer">   
  15.    <!-- generator元素:指定对象标识符的生成器名。   
  16.                      native生成器把对象标识符值的生成工作交由底层数据库来完成   
  17.           -->   
  18.    <generator class="native"/>   
  19.   </id>   
  20.    <property name="name"></property>   
  21.    <property name="classes"></property>   
  22.    <property name="score"></property>   
  23.   </class>   
  24. </hibernate-mapping>  
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Hibernate对象关系映射文件的根元素 -->
<hibernate-mapping>
 <!-- class元素用来定义一个持久化类及对应的数据库表 -->
 <class name="cn.zxf.domain.Student" table="student">
  <!-- 
		id元素:指定每个持久化类的唯一标识(即对象标识符OID)到数据库表主键字段的映射 
		name属性:指定持久化类的OID名
		column属性:指定数据库表主键字段名。此属性的名和映射到数据库表的字段名相同时,可省略
		type属性:指定主键映射时所使用的Hibernate类型名。此属性的类型为基本数据类型和String类型时,可省略
		-->
  <id column="id" name="id" type="integer">
   <!-- generator元素:指定对象标识符的生成器名。
					 native生成器把对象标识符值的生成工作交由底层数据库来完成
		  -->
   <generator class="native"/>
  </id>
   <property name="name"></property>
   <property name="classes"></property>
   <property name="score"></property>
  </class>
</hibernate-mapping>
 

hibernate.cfg.xml

Xml代码 复制代码  收藏代码
  1. <?xml version='1.0' encoding='UTF-8'?>  
  2. <!DOCTYPE hibernate-configuration PUBLIC   
  3.           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"   
  4.           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  5.   
  6. <!-- Generated by MyEclipse Hibernate Tools. -->  
  7. <hibernate-configuration>  
  8.   
  9.     <session-factory>  
  10.         <!-- SQL方言,这边设定的是MySQL -->    
  11.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.          <!-- JDBC驱动程序 -->    
  13.          <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  14.          <!-- JDBC URL -->    
  15.         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>  
  16.         <!-- 用户名 -->    
  17.         <property name="connection.username">root</property>  
  18.         <!-- 密码 -->    
  19.         <property name="connection.password">123</property>  
  20.            
  21.         <!-- 显示实际操作资料库时的SQL -->          
  22.         <property name="show_sql">true</property>  
  23.         <property name="format_sql">true</property>  
  24.         <property name="hibernate.hbm2ddl.auto">update</property>  
  25.            
  26.         <!-- 物件与资料库表格映射文件  -->    
  27.         <mapping resource="cn/zxf/domain/Student.hbm.xml"/>  
  28.     </session-factory>  
  29.        
  30.   
  31. </hibernate-configuration>  
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

    <session-factory>
		<!-- SQL方言,这边设定的是MySQL --> 
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		 <!-- JDBC驱动程序 --> 
		 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		 <!-- JDBC URL --> 
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
		<!-- 用户名 --> 
        <property name="connection.username">root</property>
		<!-- 密码 --> 
        <property name="connection.password">123</property>
        
		<!-- 显示实际操作资料库时的SQL --> 		
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
		
		<!-- 物件与资料库表格映射文件  --> 
        <mapping resource="cn/zxf/domain/Student.hbm.xml"/>
    </session-factory>
    

</hibernate-configuration>
 

猜你喜欢

转载自svsesunyuan.iteye.com/blog/1026049
今日推荐