学习Hibernate in Action读书笔记(1)

类别:Java 点击:0 评论:0 推荐:

 让我们还是以这个经久不衰的例子"Hello World"开始:)

 

1.      Message.java: 一个简单的持久类

package hello;

 

public class Message {

private Long id;   //说明

private String text;

 private Message nextMessage;

 private Message() {}

 

public Message(String text) {

this.text = text;

}

 

public Long getId() {

return id;

}

 

private void setId(Long id) {

this.id = id;

}

 

public String getText() {

return text;

}

 

public void setText(String text) {

this.text = text;

}

 

public Message getNextMessage() {

return nextMessage;

}

 

public void setNextMessage(Message nextMessage) {

this.nextMessage = nextMessage;

}

}

 

 

 

说明: ID标识符 (identifier) ,它允许应用去访问数据库以一个唯一的标识,这个标识也就是持久类的主键值。如果一个Message对象有两个实例,它们拥有同一个标识,那么代表他们访问的是数据库的同一个数据。在这里我们选择了Long做这个标识的数据类型,但是这不是必须的。因为Hibernate允许这个identifier为任何的数据类型。

 

 

2.         保存数据信息到数据库:

 

Session session = getSessionFactory().openSession();

Transaction tx = session.beginTransaction();

Message message = new Message("Hello World");

session.save(message);

tx.commit();

session.close();

 

在这段代码中,我们引用了Hibernate的Session和Transaction接口。这段代码的执行,就好像我们做了下面这段SQL所做的事:

insert into MESSAGES (MESSAGE_ID, MESSAGE_TEXT, NEXT_MESSAGE_ID)

values (1, 'Hello World', null)

 

注:这个例子中,我们假设数据中已经存在MESSAGES这张表了。

 

3.         从数据库中读出信息并打印它们

 

Session newSession = getSessionFactory().openSession();

Transaction newTransaction = newSession.beginTransaction();

List messages =

newSession.find("from Message as m order by m.text asc");

System.out.println( messages.size() + " message(s) found:" );

for ( Iterator iter = messages.iterator(); iter.hasNext(); ) {

Message message = (Message) iter.next();

System.out.println( message.getText() );

}

newTransaction.commit();

newSession.close();

 

这段代码中,大家看到了“from Message as m order by m.text asc”,这是Hibernate自带的面向对象查询语言Hibernate Query Language (HQL).那么翻译一下这句话,就是下面这个SQL了:

select m.MESSAGE_ID, m.MESSAGE_TEXT, m.NEXT_MESSAGE_ID

from MESSAGES m

order by m.MESSAGE_TEXT asc

 

输出结果:

1 message(s) found:

Hello World

 

 

4.         简单的XML映射文件

 

"-//Hibernate/Hibernate Mapping DTD//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

本文地址:http://com.8s8s.com/it/it16053.htm