学习HibernateinAction读书笔记

来源:java认证发布时间:2012-11-12 12:48:25java认证视频

  让我们还是以这个经久不衰的例子"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

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答