Hibernate创建和持久化Product

开发 后端
这里介绍Hibernate创建和持久化Product,我们用Hibernate创建一个Product,然后将其持久化;我们将搜索并加载一个已经持久化Product,并确保其可以使用;我们将会更新和删除Product。

在向大家详细介绍持久化Product之前,首先让大家了解下Hibernate创建一个Product,然后全面介绍。

在我们假想的应用程序中,基本的使用模式非常简单:我们用Hibernate创建一个Product,然后将其持久化(或者换句话说,保存它);我们将搜索并加载一个已经持久化Product,并确保其可以使用;我们将会更新和删除Product。

Hibernate创建和持久化Product

现在我们终于用到Hibernate了。使用的场景非常简单:
1. Hibernate创建一个有效的Product。
2. 在应用程序启动时使用net.sf.Hibernate.cfg.Configuration获取net.sf.Hibernate.SessionFactory。
3. 通过调用SessionFactory#openSession(),打开net.sf.Hibernate.Session。
4. 保存Product,关闭Session。

正如我们所看到的,这里没有提到JDBC、SQL或任何类似的东西。非常令人振奋!下面的示例遵循了上面提到的步骤:

  1. package test;  
  2.  
  3. import net.sf.hibernate.Session;  
  4. import net.sf.hibernate.SessionFactory;  
  5. import net.sf.hibernate.Transaction;  
  6. import net.sf.hibernate.cfg.Configuration;  
  7. import test.hibernate.Product;  
  8.  
  9. // 用法:  
  10. // java test.InsertProduct name amount price  
  11. public class InsertProduct {  
  12.  
  13. public static void main(String[] args)  
  14. throws Exception {  
  15.  
  16. // 1. 创建Product对象  
  17. Product p = new Product();  
  18. p.setName(args[0]);  
  19. p.setAmount(Integer.parseInt(args[1]));  
  20. p.setPrice(Double.parseDouble(args[2]));  
  21.  
  22. // 2. 启动Hibernate  
  23. Configuration cfg = new Configuration()  
  24.  .addClass(Product.class);  
  25. SessionFactory sf = cfg.buildSessionFactory();  
  26.  
  27. // 3. 打开Session  
  28. Session sess = sf.openSession();  
  29.  
  30. // 4. 保存Product,关闭Session  
  31. Transaction t = sess.beginTransaction();  
  32. sess.save(p);  
  33. t.commit();  
  34. sess.close();  
  35. }  

当然,INFO行指出我们需要一个Hibernate.properties配置文件。在这个文件中,我们配置要使用的数据库、用户名和密码以及其他选项。使用下面提供的这个示例来连接前面提到的Hypersonic数据库:

  1. hibernate.connection.username=sa 
  2. hibernatehibernate.connection.password=  
  3. hibernate.connection.url=jdbc:hsqldb:/home/davor/hibernate/orders  
  4. hibernate.connection.driver_class=org.hsqldb.jdbcDriver  
  5. hibernate.dialect=net.sf.hibernate.dialect.HSQLDialect 

适当地进行修改(例如,可能需要修改Hibernate.connection.url),并保存到classpath中。这很容易,但那个 test/Hibernate/Product.hbm.xml资源是什么呢?它是一个XML文件,定义了Java对象如何被持久化(映射)到一个数据库。在该文件中,我们定义数据存储到哪个数据库表中,哪个字段映射到数据库表的哪个列,不同的对象如何互相关联,等等。让我们来看一下 Product.hbm.xml。

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <!DOCTYPE hibernate-mappingPUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
    > 
  3.  
  4. <hibernate-mapping> 
  5. <class name="test.hibernate.Product"table="products"> 
  6.  
  7. <id name="id" type="string"unsaved-value="null"> 
  8. <column name="id" sql-type="char(32)"not-null="true"/> 
  9. <generator class="uuid.hex"/> 
  10. </id> 
  11. <property name="name"> 
  12. <column name="name" sql-type="char(255)"not-null="true"/> 
  13. </property> 
  14. <property name="price"> 
  15. <column name="price" sql-type="double"not-null="true"/> 
  16. </property> 
  17. <property name="amount"> 
  18. <column name="amount" sql-type="integer"not-null="true"/> 
  19. </property>   
  20. </class> 
  21. </hibernate-mapping> 

【编辑推荐】

  1. Hibernate对数据索引进行缓存
  2. 剖析Hibernate主键生成几种常用方式
  3. 浅析Hibernate实现实体对象延迟加载
  4. Hibernate集合类型的延迟加载特性
  5. 概括Hibernate属性延迟加载
责任编辑:佚名 来源: 51CTO.com
相关推荐

2009-09-29 16:46:01

创建Hibernate

2009-09-24 16:39:20

Hibernate传播

2009-09-24 15:42:44

Hibernate对象

2009-09-29 16:11:45

Hibernate实现

2009-09-25 17:19:28

Hibernate持久

2009-09-28 15:38:12

Hibernate P

2009-09-25 09:30:33

Hibernate持久

2009-06-17 16:00:03

Hibernate自定

2009-09-23 17:00:07

Hibernate持久

2009-09-21 17:46:34

Hibernate持久

2009-09-29 10:37:29

Hibernate持久

2009-09-29 10:57:25

设置Hibernate

2022-09-21 23:29:15

Python点云数据

2009-09-27 09:55:38

Hibernate持久

2023-09-06 17:02:53

2011-03-24 11:37:41

Hibernate

2013-09-12 14:56:02

iOS持久化

2009-06-26 16:27:10

Hibernate创建

2021-11-09 07:59:50

开发

2010-07-05 11:14:32

点赞
收藏

51CTO技术栈公众号