1、java实体类注解
@Entity
@Table(name="t_teacher")
public class Teacher {
}
@Entity:将一个类声明为一个实体bean(即一个持久化POJO类)
@Table:声明了该实体bean映射指定的表(table),目录(catalog)和schema名字
2、ID属性
@Id
@GeneratedValue(generator="_native")
@GenericGenerator(name="_native",strategy="native")
public Long getId() {
return id;
}
@id: 声明了该实体bean的标识属性(对应表中的主键)。在指定主键时,如果不指定主键生成策略,默认为AUTO。
@GeneratedValue:id生成规则,生成类型GenerationType包含:
|
TABLE |
使用一个特定的数据库表格来保存主键 |
|
SEQUENCE |
根据底层数据库的序列来生成主键,条件是数据库支持序列 |
|
IDENTITY |
主键由数据库自动生成(主要是自动增长型) |
|
AUTO |
主键由程序控制 |
@ GenericGenerator:自定义主键生成策略。其中
name属性指定生成器名称。
strategy属性指定具体生成器的类名。
说明:native: 对于 oracle 采用 Sequence 方式,对于MySQL 和 SQL Server 采用identity(自增主键生成机制),native就是将主键的生成工作交由数据库完成,hibernate不管(很常用)。
@ Column:指定数据库中的列名。包括:
Name:指定列名
unique:是否唯一
nullable:是否为空
length :字符长度
3、针对注解实体类,在配置文件hibernate.cfg.xml中添加
<mapping class="com.stiny.model.Teacher"/>4、生成的表结构
Hibernate4中已经将configuration的buildSessionFactory方法废弃,新增一个接口ServiceRegistry。Hibernate4的配置入口变成ServiceRegistry对象,Configuration对象将通过ServiceRegistry对象获取配置信息,使用了Builder模式创建一个ServiceRegistry对象,
private static SessionFactory buildSessionFactory(){
//实例化配置文件
Configuration configuration = new Configuration().configure();
//实例化服务登记
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
//获取Session工厂
return configuration.buildSessionFactory(serviceRegistry);
}6 编写Junit测试单元类StudentTestpublic class StudentTest {
//获取sessionFaction
private SessionFactory sessionFactory = HibernateUtil.getSessionfactory();
@Test
public void testAdd(){
Session session = sessionFactory.openSession();
//开启事物
session.beginTransaction();
Student student = new Student();
student.setName("测试1");
session.save(student);
session.getTransaction().commit();
session.close();
}
@Test
public void testDelete(){
Session session = sessionFactory.openSession();
session.beginTransaction();
Student t = (Student)session.get(Student.class, Long.valueOf(2));
System.out.println("student :" + t.getId() + " " + t.getName());
session.delete(t);
session.getTransaction().commit();
session.clear();
}说明:
在junit 4 当中测试类无需继承于 TestCase类,测试方法的名字也无需以test开头,主要以注解的方式来定义,只要在测试方法加上@Test就可以进行测试。
|
@Test |
定义一个测试方法的标志 |
|
@Before |
在每一个测试方法之前被执行 |
|
@After |
在每一个测试方法之后被执行 |
本文详细解析了Java实体类中的实体注解@javax.persistence.Entity与@Table的使用,阐述了ID属性的生成策略及@Column注解的用法,并介绍了如何在配置文件中映射实体类到数据库表,以及通过SessionFactory实现持久化操作的基本步骤。
3143

被折叠的 条评论
为什么被折叠?



