为了账号安全,请及时绑定邮箱和手机立即绑定

hibernate或者ssh 框架spring 用注解配置实体类,业务类,dao类的映射

标签:
Java
  1. @Table

声明了该实体bean映射指定的表(table),目录(catalog)和schema名字

  1. @Id

声明了该实体bean的标识属性(对应表中的主键)。

  1. @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)

  1. @GeneratedValue

声明了主键的生成策略。该注解有如下属性:

strategy 指定生成的策略(JPA定义的),这是一个GenerationType。默认是GenerationType. AUTO

GenerationType.AUTO 主键由程序控制

GenerationType.TABLE 使用一个特定的数据库表格来保存主键

GenerationType.IDENTITY 主键由数据库自动生成(主要是自动增长类型)

GenerationType.SEQUENCE 根据底层数据库的序列来生成主键,条件是数据库支持序列。这个值要与generator一起使用,generator 指定生成主键使用的生成器(可能是orcale中的序列)。

  1. GenericGenerator

声明了一个hibernate的主键生成策略。支持十三种策略。该注解有如下属性:

name 指定生成器名称,它被应用于@GeneratedValue的generator的值。

strategy 指定具体生成器的类名(指定生成策略)。

parameters 得到strategy指定的具体生成器所用到的参数。

  1. @Transient

声明了非持久化属性,即数据库中没有相应的映射字段,是一个普通属性。

  1. @Temporal

声明了日期类型。

TemporalType.DATE 日期,例:2011-04-12

TemporalType.TIME 时间,例:22:50:30

TemporalType.TIMESTAMP 日期和时间,例:2011-04-12 22:51:30

下面是spring提供的注解。

下面的是表头。
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">

<!-- 扫描包中注解标注的类 -->
<context:component-scan base-package="com.xx.dao,com.xx.biz" />

<!-- 实体类进行扫描 -->
<property name="packagesToScan" value="com.xx.entity"></property>

8.@repository

用于标注DAO类

8.1@componment
定义了dao的bean。

他的作用等同于xml文件中的配置

<bean id="xxDao" class="XX.XX.XXdao"/>
9@service

用于标注业务类

10@controller

用于标注控制器类

11.autowired 注解实现bean的自动装配

12@scope
制定了bean的作用域。

二、看例子

Role.class
@Entity
@Table(name="role")
public class Role implements Serializable{

private String roleId;
private String roleName;
@Id
@Column(name="roleid")
@GenericGenerator(name="generator", strategy = "uuid.hex")
@GeneratedValue(generator="generator")
public String getRoleId() {
    return roleId;
}
public void setRoleId(String roleId) {
    this.roleId = roleId;
}
@Column(name="rolename")
public String getRoleName() {
    return roleName;
}
public void setRoleName(String roleName) {
    this.roleName = roleName;
}

}
Student.class

@Entity
@Table(name="student")
public class Student implements Serializable{

private String stuId;
private String stuName;
private Role role;

@Id
@Column(name="stuid")
@GenericGenerator(name="generator",strategy="uuid.hex")
@GeneratedValue(generator="generator")
public String getStuId() {
    return stuId;
}
public void setStuId(String stuId) {
    this.stuId = stuId;
}
@Column(name="stuno")
public String getStuNo() {
    return stuName;
}
public void setStuNo(String stuNo) {
    this.stuName = stuNo;
}

}

三、在spring容器的配置

实体类写好之后,需要在spring容器中加载,在配置sessionFactory时进行配置,有两种配置的方式

1、使用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="packagesToScan"  value="com.demo.entity"/> -->
    <property name="annotatedClasses">
        <list>
            <value>com.demo.entity.Role</value>
            <value>com.demo.entity.Student</value>
        </list>
    </property>
</bean> 

2、使用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"/>
</bean>
点击查看更多内容
3人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消