对于hibernate,我们还可以使用基于EJB的注解将实体类映射到数据库中,就不需要再配置User.hbm.xml来映射了
项目结构如图:
首先还是实体类User.hbm.xml,使用了EJB注解
package cn.com.lt.entity;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="USER_EJB")
//没有@Table默认根据实体类名建表,上面的操作相当于建表名为USER_EJB
public class User {
private int id;
private String username;
private String password;
@Id
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
配置hibernate.cfg.xml,仔细观察映射直接变成了实体类User了
<?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">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<!-- 表示使用 oracle 数据库驱动类 -->
<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
<!-- jdbc 的连接 url 和数据库(使用我们之前新建的 hibernate)-->
<property name="connection.url">jdbc:oracle:thin:@172.18.1.252:1521:ora9is</property>
<!-- 数据库用户名 -->
<property name="connection.username">test</property>
<!-- 密码(这里为空) -->
<property name="connection.password">test</property>
<!-- 数据库使用的方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo all executed SQL to stdout -->
<!-- 设置 控制台输出 sql 语句 为真 -->
<property name="show_sql">true</property>
<!-- 设置格式为 sql -->
<property name="format_sql">true</property>
<!-- 第一次加载 hibernate 时根据实体类自动建立表结构,以后自动更新表结构 -->
<property name="hbm2ddl.auto">update</property>
<!-- 映射直接变成了实体类-->
<mapping class="cn.com.lt.entity.User"/>
</session-factory>
</hibernate-configuration>
我就简单的做下保存测试:
package cn.com.lt.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import cn.com.lt.entity.User;
public class TestHibernate {
private static Configuration cfg = new Configuration().configure();
@SuppressWarnings("deprecation")
private static SessionFactory sf = cfg.buildSessionFactory();
private static Session session = sf.openSession();
@Test
public void test1(){
//开启事务
session.beginTransaction();
User user = new User();
user.setId(1);
user.setUsername("Javaer");
user.setPassword("520");
session.save(user);
session.getTransaction().commit();
session.close();
sf.close();
}
}