使用Hibernate例子annotations

下载hibernate-release-4.1.3.Final.tgz

例子在这里:

hibernate-release-4.1.3.Final\documentation\quickstart\en-US\html\files\hibernate-tutorials.zip

这里说关于annotations的事。


============配置log4j
修改hibernate-tutorials/pom.xml
增加如下代码
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.1</version>
    </dependency>
这可以让maven使用log4j-1.2.16.jar

复制hibernate-release-4.1.3.Final\project\etc\log4j.properties到

hibernate-tutorials\annotations\src\test\resources中,

这样,可以控制log4j,省得运行时输出一堆log。

 

log4j.properties中,把log4j.logger.org.hibernate=debug改成log4j.logger.org.hibernate=warn

 

log就会干干净净。

============修改hibernate.cfg.xml,符合自己的数据库信息
        <property name="connection.driv er_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://ip地址:端口/数据库名字?useUnicode=true&amp;characterEncoding=UTF-8</property>

 

============增加一个map类

在hibernate.cfg.xml中加:

<mapping class="org.hibernate.tutorial.annotations.FoodItem2"/>

告诉hibernate,这个类需要被map。

 

---------表结构

CREATE TABLE `food_item` (

  `foodItem_Id` bigint(20) NOT NULL default '0',

  `name_str` varchar(75) default NULL,

  `points_num` int(11) default NULL

)


---------FoodItem2.java关键处

@Entity

@Table(name = "food_item")
public class FoodItem2 {

  @Id
  @Column(name = "foodItem_Id")
  public long getFoodItemId() {
    return _foodItemId;
  }

  //@Id是必须的。

  @Column(name = "name_str")
  public String getName() {
    return _name;
  }

============hibernate依赖的jar不少,以下来自maven classpath,其中有些冗余。
\org\javassist\javassist\3.15.0-GA\javassist-3.15.0-GA.jar
\org\jboss\spec\javax\transaction\jboss-transaction-api_1.1_spec\1.0.0.Final\jboss-transaction-api_1.1_spec-1.0.0.Final.jar
\org\hibernate\javax\persistence\hibernate-jpa-2.0-api\1.0.1.Final\hibernate-jpa-2.0-api-1.0.1.Final.jar
\org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar
\org\hibernate\hibernate-core\4.1.3.Final\hibernate-core-4.1.3.Final.jar
\org\hibernate\common\hibernate-commons-annotations\4.0.1.Final\hibernate-commons-annotations-4.0.1.Final.jar
\antlr\antlr\2.7.7\antlr-2.7.7.jar
\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar
\org\slf4j\slf4j-simple\1.6.1\slf4j-simple-1.6.1.jar
\org\hamcrest\hamcrest-core\1.1\hamcrest-core-1.1.jar
\com\h2database\h2\1.2.145\h2-1.2.145.jar
\junit\junit\4.10\junit-4.10.jar
\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar
\log4j\log4j\1.2.16\log4j-1.2.16.jar
\org\jboss\logging\jboss-logging\3.1.0.GA\jboss-logging-3.1.0.GA.jar

此外,还加了mysql.jar。

============执行结果
Hibernate: select fooditem2x0_.foodItem_Id as foodItem1_0_, fooditem2x0_.name_str as name2_0_, fooditem2x0_.points_num as points3_0_ from food_item fooditem2x0_
1, Hamburger2, 5
2, French fries2, 3
3, Milk Shake2, 4

主要代码文件:
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://aa:2222/dd?useUnicode=true&amp;characterEncoding=UTF-8</property>
        <property name="connection.username">ff</property>
        <property name="connection.password">ff</property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <!-- Names the annotated entity class -->
        <mapping class="org.hibernate.tutorial.annotations.FoodItem2"/>
    </session-factory>
</hibernate-configuration>
 
FoodItem2.java
package org.hibernate.tutorial.annotations;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "food_item")
public class FoodItem2 {
  @Id
  @Column(name = "foodItem_Id")
  public long getFoodItemId() {
    return _foodItemId;
  }

  public void setFoodItemId(long foodItemId) {
    _foodItemId = foodItemId;
  }

  @Column(name = "name_str")
  public String getName() {
    return _name;
  }

  public void setName(String name) {
    _name = name;
  }

  @Column(name = "points_num")
  public int getPoints() {
    return _points;
  }

  public void setPoints(int points) {
    _points = points;
  }

  private long _foodItemId;
  private String _name;
  private int _points;

  public String toString() {
    return _foodItemId + ", " + _name + ", " + _points;
  }
}
 
A2.java
package org.hibernate.tutorial.annotations;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class A2 {
  private SessionFactory sessionFactory;

  protected void setUp() throws Exception {
    // A SessionFactory is set up once for an application
    sessionFactory = new Configuration().configure().buildSessionFactory();
  }

  protected void tearDown() throws Exception {
    if (sessionFactory != null) {
      sessionFactory.close();
    }
  }

  @SuppressWarnings({ "unchecked" })
  public void testBasicUsage() {
    Session session = sessionFactory.openSession();
    session.setDefaultReadOnly(true);
    session.beginTransaction();
    List result = session.createQuery("from FoodItem2").list();
    for (FoodItem2 event : (List<FoodItem2>) result) {
      System.out.println(event);
    }
    session.getTransaction().commit();
    session.close();
  }

  public static void main(String[] args) throws Exception {
    A2 a1 = new A2();
    a1.setUp();
    a1.testBasicUsage();
    a1.tearDown();
  }
}
 
树叶,阳光
树叶,阳光


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值