实体类注解
实体类注解示例:
@Entity
@Table(name="user")
public class User implements Serializable{
private String userId;
private String userName;
@Id
@Column(name="userid")
@GenericGenerator(name="generator", strategy = "uuid.hex")
@GeneratedValue(generator="generator")
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId= userId;
}
@Column(name="username")
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
映射实体类
SimpleHibernateDao方法一
@Repository
public class UserDao extends SimpleHibernateDao<User, String> {
@Override
@Resource(name = "sessionFactory")
public void setSessionFactory(SessionFactory sessionFactory) {
// TODO Auto-generated method stub
super.setSessionFactory(sessionFactory);
}
}
annotatedClasses方法二
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>com.demo.entity.User</value>
</list>
</property>
packagesToScan对实体类进行扫描方法二
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
</props>
</property>
<property name="packagesToScan" value=">com.demo.entity.User"/>
</bean>
拓展
1. @Table
声明了该实体bean映射指定的表(table),目录(catalog)和schema名字
2. @Id
声明了该实体bean的标识属性(对应表中的主键)。
3. @Column
声明了属性到列的映射。该注解有如下的属性:
name 可选,列名(默认值是属性名)
unique 可选,是否在该列上设置唯一约束(默认值false)
nullable 可选,是否设置该列的值可以为空(默认值false)
insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true)
updatable 可选,该列是否作为生成的update语句中的一个列(默认值true)
columnDefinition 可选,为这个特定列覆盖sql ddl片段(这可能导致无法在不同数据库间移植)
table 可选,定义对应的表(默认为主表)
length 可选,列长度(默认值255)
precision 可选,列十进制精度(decimal precision)(默认值0)
scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)
4. @GeneratedValue
声明了主键的生成策略。该注解有如下属性:
strategy 指定生成的策略(JPA定义的),这是一个GenerationType。默认是GenerationType. AUTO
GenerationType.AUTO 主键由程序控制
GenerationType.TABLE 使用一个特定的数据库表格来保存主键
GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型)
GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。这个值要与generator一起使用,generator 指定生成主键使用的生成器(可能是orcale中的序列)。
5. GenericGenerator
声明了一个hibernate的主键生成策略。支持十三种策略。该注解有如下属性:
name 指定生成器名称,它被应用于@GeneratedValue的generator的值。
strategy 指定具体生成器的类名(指定生成策略)。
parameters 得到strategy指定的具体生成器所用到的参数。
6. @Transient
声明了非持久化属性,即数据库中没有相应的映射字段,是一个普通属性。
7. @Temporal
声明了日期类型。
TemporalType.DATE 日期,例:2011-04-12
TemporalType.TIME 时间,例:22:50:30
TemporalType.TIMESTAMP 日期和时间,例:2011-04-12 22:51:30