`
cakin24
  • 浏览: 1396129 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Hibernate单表操作——单一主键

阅读更多
一 单一主键
assigned:由java应用程序负责生成(手工赋值)。
native:由底层数据库自动生成标示符,如果是MySQL,就是increment,如果是Oracle,就是sequence,等等。
 
二 通过native为MySQL生成单一主键
 
Students
import java.util.Date;
 
//学生类
public class Students {
        /*
         * JavaBeans的四点原则
         * 1.必须是公有的类
         * 2.提供公有的不带参数的默认的构造方法
         * 3.属性私有
         * 4.属性setter/getter封装
         */
        private int sid; // 学号
        private String sname; // 姓名
        private String gender; // 性别
        private Date birthday; // 出生日期
        private String address; // 地址
 
        public Students() {
        }
 
        public Students(int sid, String sname, String gender, Date birthday,
                        String address) {
                // super();
                this.sid = sid;
                this.sname = sname;
                this.gender = gender;
                this.birthday = birthday;
                this.address = address;
        }
 
        public int getSid() {
                return sid;
        }
 
        public void setSid(int sid) {
                this.sid = sid;
        }
 
        public String getSname() {
                return sname;
        }
 
        public void setSname(String sname) {
                this.sname = sname;
        }
 
        public String getGender() {
                return gender;
        }
 
        public void setGender(String gender) {
                this.gender = gender;
        }
 
        public Date getBirthday() {
                return birthday;
        }
 
        public void setBirthday(Date birthday) {
                this.birthday = birthday;
        }
 
        public String getAddress() {
                return address;
        }
 
        public void setAddress(String address) {
                this.address = address;
        }
 
        @Override
        public String toString() {
                return "Students [sid=" + sid + ", sname=" + sname + ", gender="
                                + gender + ", birthday=" + birthday + ", address=" + address
                                + "]";
        }
 
}
 
StudentsTest
 
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
//测试类
public class StudentsTest {
    
    private SessionFactory sessionFactory;
    private Session session;
    private Transaction transaction;
    @Before
    public void init(){
        // 创建配置对象   
        Configuration config = new Configuration().configure();
        //config.addClass(Students.class);
        // 创建服务注册对象
        ServiceRegistry serviceRegistery = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
        // 创建会话工厂对象
        sessionFactory = config.buildSessionFactory(serviceRegistery);
        // 创建会话对象
        session = sessionFactory.openSession();
        // 开启事务
        transaction = session.beginTransaction();
    }
    
    @After
    public void destory(){
        // 提交事务
        transaction.commit();
        // 关闭会话
        session.close();
        // 关闭会话工厂
        sessionFactory.close();
    }
    
    @Test
    public void testSaveStudents(){
        //Students s= new Students(1,"张三丰","男",new Date(),"武当山");
        Students s= new Students();
        s.setSname("张三丰");
        s.setGender("男");
        s.setBirthday(new Date());
        s.setAddress("武当山");
        session.save(s);
    }
}
 
Students.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<!-- Generated 2017-9-17 10:33:28 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="Students" table="STUDENTS">
        <id name="sid" type="int">
            <column name="SID" />
            <generator class="native" />
            <!--  <generator class="assigned" />-->
        </id>
        <property name="sname" type="java.lang.String">
            <column name="SNAME" />
        </property>
        <property name="gender" type="java.lang.String">
            <column name="GENDER" />
        </property>
        <property name="birthday" type="java.util.Date">
            <column name="BIRTHDAY" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
    </class>
</hibernate-mapping>
 
hibernate.cfg.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
                "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password">waDY820828</property>
            <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
        <property name="show_sql">true</property>
            <property name="format_sql">true</property>
            <property name="hbm2ddl.auto">update</property>
            <mapping resource="Students.hbm.xml" />
    </session-factory>
</hibernate-configuration>
 
三 测试结果
连续执行两次测试用例


 


 
  • 大小: 33.8 KB
  • 大小: 26 KB
1
0
分享到:
评论

相关推荐

    hibernate视频

    - **单表继承**:所有子类共享一张表。 - **多表继承**:每个子类对应一张表。 - **表每类继承**:每个类对应一张表。 ### 四、查询与检索 #### 4.1 HQL查询 - **基本语法**:SELECT语句的基本结构。 - **条件过滤...

    Hibernate4总结文档

    -- 单一主键 --&gt; &lt;!-- generator配置自增 --&gt; &lt;!-- 对于Oracle,可使用&lt;generator class="identity"/&gt; --&gt; &lt;!-- 其他属性映射 --&gt; ... &lt;/hibernate-mapping&gt; ``` - `&lt;class&gt;`标签定义了实体类(`...

    Hibernate映射解析 七种映射关系 后端 - Java.zip

    本压缩包文件“Hibernate映射解析 七种映射关系 后端 - Java.zip”中详细介绍了Hibernate的核心概念——映射关系。以下是关于Hibernate映射关系的详细解释: 1. **一对一映射** (One-to-One Mapping) 在一对一映射...

    Hibernate3中文文档

    - **继承实现**: 如何在Hibernate中支持继承模式,包括单一表、每个类一张表等方式。 - **equals()和hashCode()**: 实现这两个方法对于实体类的正确操作至关重要。 - **动态模型**: 支持运行时创建和修改类结构的...

    复合主键@IdClass

    复合主键相较于单一主键,在数据管理方面提供了更加灵活的方式来处理实体之间的关系。本文将详细探讨如何在SSH框架(Spring、Struts、Hibernate)中的实体类使用`@IdClass`注解来定义复合主键,并阐述其使用方法及...

    Hibernate中文参考文档

    ### Hibernate中文参考文档知识点概述 #### 一、Hibernate简介与概念 ... - **5.1.15 子类 (subclass)**:单一表继承模式。 - **5.1.16 连接的子类 (joined-subclass)**:每种子类型一张表继承模式。

    hibernate实体设计

    部分文本提到了一种特殊的设计模式——**单一表设计**。在这种模式下,所有的实体类被映射到同一个数据库表中,通过增加一个额外的字段(例如`category`)来区分不同类型的实体。 - **优点**: - 数据库结构简单。...

    jOOQ.zip

    **jOOQ——Java Object Oriented Querying** jOOQ(发音为"joose")是一个开源的Java库,专门用于简化SQL查询的构建、执行和处理。它提供了一种类型安全的方式,允许开发者直接在Java代码中编写SQL,从而避免了字符...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一的思想和群体的智慧结合变的更加有效,个人出版变成人人都可以实现的梦想—— Blog 正在影响和改变着我们的...

    第04章 面向对象(上) 09 对象的一对一关系

    在本章中,我们将聚焦于面向对象的一个特定方面——对象的一对一关系。一对一关系在实际应用中广泛存在,比如在数据库设计中,一个实体可能对应另一个实体的唯一实例,或者在类的设计中,一个类可能与另一个类有单一...

Global site tag (gtag.js) - Google Analytics