首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Hibernate诠释法的简单配置与使用

2012-08-30 
Hibernate注释法的简单配置与使用Hibernate是一种ORM(Object/Relation Mapping),对象关系映射,Hibernate的

Hibernate注释法的简单配置与使用

Hibernate是一种ORM(Object/Relation Mapping),对象关系映射,Hibernate的配置依赖于外部 XML 文件:数据库映射被定义为一组 XML 映射文件,并且在启动时进行加载。每一张数据库表都需要一个*.hbm.xml映射一个持久化类。但是在新版本的Hibernate中可以利用hibernate annotation,利用注释发简化这种映射,省掉了xml文件,这跟JPA就很类似了。

以前的Hibernate配置方法:http://hi.baidu.com/amauri3389/blog/item/64a10f3804c8bdfd3b87ce2f.html

同样利用MyEclipse,Hibernate的注释方配置和使用方法如下:

新建工程:

1,工具栏File->new->Java Project->工程命名,我这里是HibernateTest,其他都默认就好了->Finish????

?

2, 在左侧Package Explorer里面,工程名上鼠标右键->MyEclipse->Add Hibernate Capabilities->弹出的对话框设置都用默认就好了,点击next->再next->到了设置连接的数据库参数的页面(如下图)Hibernate诠释法的简单配置与使用

填写完相关信息后,下一个页面时选择把自动生成的HibernateSessionFactory.java文件放在哪个包里,这里新建一个com包就好了,点击Finish就设置好了。

然后就会发现已经自动生成了hibernate.cfg.xml,同时com包里也已经有HibernateSessionFactory.java了。新建数据库,里面只有一张表test_account,有三个属性列account varchar(50), password varchar(50), balance float。其中主键是account。包结构如下图:

Hibernate诠释法的简单配置与使用

持久化类Test_Account.java代码如下:

?

package com.domain;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="test_account")public class Test_Account {@Idprivate String account;private String password;private double balance;public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public double getBalance() {return balance;}public void setBalance(double balance) {this.balance = balance;}}

?

?其实这里的Hibernate注释跟JPA的几乎完全一样。

接下来就是在hibernate.cgf.xml文件里添加该持久化类的映射声明,具体就是在<session-factory></session-factory>里加入<mapping name="code"><?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> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=TestDB</property> <property name="connection.username">sa</property> <property name="connection.password">1234</property> <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="myeclipse.connection.profile">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <mapping name="code">package test;import java.util.ArrayList; import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration; import com.domain.Test_Account;public class Maintest {public static void main(String[] args) { new Maintest().execut(); System.out.println("success");}private void execut() {SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();Session session =sessionFactory.openSession(); session.beginTransaction(); Test_Account insertaccout=new Test_Account(); insertaccout.setAccount("78512000"); insertaccout.setPassword("1234656"); insertaccout.setBalance(222.31); session.beginTransaction(); Test_Account ta2=(Test_Account)session.get(Test_Account.class, "110110"); session.delete(ta2);//删除记录 session.save(insertaccout);//插入记录 Test_Account med=(Test_Account)session.load(Test_Account.class, "1456"); med.setPassword("tiananmen4"); session.update(med);//更新记录 ArrayList<Object> result=(ArrayList)session.createQuery("from Test_Account").list();//查询所有记录 for(int i=0;i<result.size();i++) { Test_Account temp=(Test_Account)result.get(i); System.out.println(""+temp.getAccount()+" "+temp.getPassword()+" "+temp.getBalance()); } session.getTransaction().commit(); session.close(); }}

?

这里要注意的是session的获得方法,跟以前传统的方式不同,还有就是获得持久化对象的方式,使用load和get其实都可以。其他都跟传统方式利用HQL操作是一样的。

热点排行