标签:
1 简述
通过使用Hibernate框架,开发者可以使用面向对象的方式来进行数据库访问,从而取代
以前使用JDBC进行数据库访问的方式。通过使用Hibernate框架,web应用可以通过面向
对象的方式来进行数据库的各种访问操作,如插入,更新,删除,查询数据等。
1.1 创建Hibernate配置文件
hibernate从其配置文件中读取和数据库有关的信息。hibernate的配置文件分为两种形式,
一种是XML格式的配置文件,还有一种是资源文件格式的配置文件。分为XML文件或properties文件。
默认文件名为hibernate.cfg.xml与hibernate.properties,参数既可以配置在cfg.xml文件中,
也可以排至在properties文件中。通常配置文件位于classpath目录下。
下面来看XML格式的配置文件,其文件名为hibernate.cfg.xml。在该配置文件中配置数据库连接
URL,以及数据库连接驱动,数据库用户名及用户密码。还配置一个属性dialect,该属性用来指定
数据库产品类型。
hibernate.cfg.xml:
1 <!DOCTYPE hibernate-configuration PUBLIC 2 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 4 5 <hibernate-configuration> 6 <session-factory> 7 <!-- 数据库连接URL --> 8 <property name="connection.url"> 9 jdbc:mysql://localhost/javaweb 10 </property> 11 12 <!-- 数据库连接驱动 --> 13 <property name="connection.driver_class"> 14 com.mysql.jdbc.Driver 15 </property> 16 17 <!-- 数据库用户名 --> 18 <property name="connection.username">root</property> 19 20 <!-- 数据库用户密码 --> 21 <property name="connection.password">123456</property> 22 23 <!-- 数据库方言 --> 24 <property name="dialect"> 25 org.hibernate.dialect.MySQLDialect 26 </property> 27 28 <!-- 指定映射文件 --> 29 <mapping resource="com/javaweb/hibernate/Product.hbm.xml"/> 30 31 </session-factory> 32 </hibernate-configuration>
1.2 创建持久化类
持久化类是一个POJO类,不用集成和实现任何类或借口。该类中包含与数据库表中
相对应的属性,并包含各个属性所对应的setter和getter方法。以下示例代码中的持久化类
包含了三个属性:id,name及price,分别表示产品ID,产品名称及产品价格。
Product.java
1 package com.javaweb.hibernate; 2 public class Product { 3 //产品ID 4 private String id; 5 //产品名称 6 private String name; 7 //产品价格 8 private double price; 9 //获得产品ID 10 public String getId() { 11 return id; 12 } 13 //设置产品ID 14 public void setId(String id) { 15 this.id = id; 16 } 17 //获得产品名称 18 public String getName() { 19 return name; 20 } 21 //设置产品名称 22 public void setName(String name) { 23 this.name = name; 24 } 25 //获得产品价格 26 public double getPrice() { 27 return price; 28 } 29 //设置产品价格 30 public void setPrice(double price) { 31 this.price = price; 32 } 33 }
1.3 创建对象关系映射文件
关系映射文件用来映射持久化类和数据库表,从而将持久化类中的属性和数据库表中的
字段关联起来。其中id元素用来定义主键标识,property元素用来定义其他属性。如果不指定
数据库表中字段,子默认使用持久化类中的属性作为其数据库表字段名称。映射文件的文件名
一般采用持久化类名加上“.hbm.xml”,并保存在持久化类的同目录下。
以下实例是一个对应关系的映射文件示例,用来映射前面添加的持久化类Product.java
Product.hbm.xml
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 5 <hibernate-mapping> 6 <!-- 每个class对应一个持久化对象,此处对应的是同目录下的Product --> 7 <class name="com.javaweb.hibernate.Product"> 8 <!-- id元素用来定义主键标识,并指定主键生成策略 --> 9 <id name="id"> 10 <generator class="assigned"></generator> 11 </id> 12 13 <!-- 定义其他属性 --> 14 <property name="name"></property> 15 <property name="price"></property> 16 </class> 17 </hibernate-mapping>
另外,此处要想是的映射文件起作用,还必须在Hibernate的配置文件hibernate.cfg.xml中
配置该映射文件,具体代码如下图所示:
数据映射文件编写时还需要注意以下几点:
* 按照XML文件的编写规范,一一对应。
* 数据映射必须要放置到<hibernate-mapping></hibernate-mapping>之间。
* 指定所使用到的实体类的存放位置及映射的表名和数据库名,以上内容要在<class></class>属性中指定。
1.4 创建数据库表
以前开发Web应用,都是先创建数据库表,然后才能通过JDBC来进行操作。现在将
思想转变一下,可以不用创建数据库,而是通过Hibernate来自动创建数据库表,并根据
持久化类的属性名来作为数据库表的字段名。以下示例代码为通过Hibernate创建数据库的实例。
CreateDB.java
1 package com.javaweb.hibernate; 2 3 import org.hibernate.SessionFactory; 4 import org.hibernate.cfg.Configuration; 5 import org.hibernate.tool.hbm2ddl.SchemaExport; 6 7 public class CreateDB { 8 9 public static void main(String[] args){ 10 //读取配置文件hibernate.cfg.xml 11 Configuration cfg = new Configuration().configure(); 12 13 SessionFactory sessionFactory = cfg.buildSessionFactory(); 14 15 //创建SchemaExport实例 16 SchemaExport sExport = new SchemaExport(cfg); 17 //创建数据库表 18 sExport.create(true, true); 19 } 20 }
以上代码第11行通过Configuration类来读取配置文件hibernate.cfg.xml。
代码第16行创建了SchemaExport实例化对象,代码第18行通过调用SchemaExport的
实例化对象的create()方法来创建数据库。
1 drop table if exists Product 2 create table Product ( 3 id varchar(255) not null, 4 name varchar(255), 5 price double precision, 6 primary key (id) 7 )
在MySql服务器控制台中输入“desc product;”命令,可以看到该表的字段名称及其他信息,
如下图所示:
1.5 插入数据
下面看如何使用Hibernate插入一条数据。首先看以下要完成数据库操作需要那些步骤。
以下代码是一个通过Hibernate插入数据的示例。
InsertProduct.java
1 package com.javaweb.hibernate; 2 3 import org.hibernate.Session; 4 import org.hibernate.SessionFactory; 5 import org.hibernate.cfg.Configuration; 6 7 public class InsertProduct { 8 9 public static void main(String[] args) { 10 //读取配置文件hibernate.cfg.xml,获得Configuration实例 11 Configuration cfg = new Configuration().configure(); 12 13 //创建SessionFactory 14 SessionFactory factory = cfg.buildSessionFactory(); 15 16 //创建Session 17 Session session = factory.openSession(); 18 19 //开启事务 20 session.beginTransaction(); 21 22 //实例化一个Product 23 Product product = new Product(); 24 product.setId("0511236"); 25 product.setName("冰箱"); 26 product.setPrice(1250.00); 27 28 //保存数据 29 session.save(product); 30 31 //事务提交 32 session.getTransaction().commit(); 33 34 //关闭session 35 if(session.isOpen()) { 36 session.close(); 37 } 38 } 39 }
运行该java应用程序。在MySQL控制台中输入" select * from product;"命令
可以看到数据成功插入到product表中了。
标签:
原文地址:http://www.cnblogs.com/tdcqma/p/4838420.html