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测试单元类StudentTest
public 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 | 在每一个测试方法之后被执行 |