Hibernate使用注解方式

来源:互联网 发布:淘宝客app制作教程2017 编辑:程序博客网 时间:2024/05/11 22:35
------------------注解-------------------
@Entity    //声明一个实体
@Table(name="表名")  //与表映射
@Id     //指定主键
@Column //指定表里对应的列











-----------多对多注解方式编程步骤 -----------
一、首先需要建立三张表,两个JavaBean类个对应的一张表以及一张中间表
建表注意事项:

1、对应javabean的两张表一定需要各有一个主键,这两个主键分别对应中间表里的两个外键,这样才能建立关联

2、建表sql语句示例如下:
create table student2(
        id number primary key not null,
        name varchar(30)
);

create table course(
       id number primary key not null,
       name varchar2(30)
);

create table student2_course(
       s_id number references student2(id),
       c_id number references course(id)
);

二、注解的使用
(放在类前面的注解)
1、@Entity     //放在JavaBean类的前面,用来声明这是一个实体 
2、@Table(name="表名")     //放在@Entity之后,用来声明该实体类对应的表
3、@GenericGenerator(name ="genID", strategy ="increment")          //声明主键的生成方式

(放在方法名前面的注解)
4、@Id          //声明主键,也可以放在get方法之前
5、@Column //声明该变量对应表中的列  
6、@GeneratedValue(generator="genID")   //和GenericGenerator对应使用  里面的generator属性的值与GenericGenerator里面的name对应的值相同
7、@ManytoMany           //声明多对多关系
8、@JoinTable(name="student2_course",                                                  
                   joinColumns={@JoinColumn(name="c_id")},
                   inverseJoinColumns={@JoinColumn(name="s_id")} )                    //name:对应的中间表      
                                                                                                                      //jonColumns:里面的参数是个数组,因此用{ } 里面是@JoinColumn(name="")声明与这个javaBean主键相关联的表中外键
                                                                                                                       //inverseJoinColumns:同理,声明另与一个javabean对用的表格中的外键
           具体的代码示例 如下:                                                                                         
//类coursu总的
@Entity
@Table(name="course")
@GenericGenerator(name = "genID", strategy = "increment")
public class Course {
     @Id
     @GeneratedValue(generator="genID")
     @Column(name="id")
     private Long id;
     @Column(name="name")
     private String name;
     @ManyToMany
     @JoinTable(name="student2_course",
                   joinColumns={@JoinColumn(name="c_id")},
                   inverseJoinColumns={@JoinColumn(name="s_id")} )
     private Set<Student2> students = new HashSet<Student2>();



三、配置文件hibernate.cfg.xml
      需要在配置文件中添加映射类
          <mapping class="对应类的路径"/>
          <mapping class="com.ldl.domain1.GoodBean"/>

<!DOCTYPE hibernate-configuration PUBLIC
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<!--      1、加载数据库驱动,获取数据库连接 -->
     <session-factory>
          <property name="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</property>
          <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
          <property name="hibernate.connection.username">scott</property>
          <property name="hibernate.connection.password">tiger</property>
          <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property><!-- 169.254.146.196 -->
          <!-- 显示SQL,默认为false -->
          <property name="hibernate.show_sql">true</property>

          <!--添加映射类 -->
          <mapping class="com.ldl.domain1.GoodBean"/>
          <mapping class="com.ldl.domain2.Course"/>
          <mapping class="com.ldl.domain2.Student2"/>

     </session-factory>
</hibernate-configuration>

1 0
原创粉丝点击