hibernate用注解的方式实现orm

hibernate 有两种方式实现把一张表映射成一个对象,一种是配置文件的方式,一种是注解的方式。这里用hibernate提供的注解的方式实现一个对象和一张表之间的对应。

思路:

首先在hibernate.cfg.xml文件中配置如下内容:数据库,方言,是否显示sql,加载映射类:注意这个hibernate.cfg.xml位置在src下。

因为new Configuration().configure()。这个configure()函数打开源码默认的hiberante.cfg.xml就在src下。

hibernate.cfg.xml的配置的代码如下所示:

 1 <?xml version=‘1.0‘ encoding=‘utf-8‘?>
 2 <!--
 3   ~ Hibernate, Relational Persistence for Idiomatic Java
 4   ~
 5   ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 6   ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 7   -->
 8 <!DOCTYPE hibernate-configuration PUBLIC
 9         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
10         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
11
12 <hibernate-configuration>
13
14     <session-factory>
15
16         <!-- Database connection settings -->
17         <property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
18         <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
19         <property name="connection.username">scott</property>
20         <property name="connection.password">a123456</property>
21
22         <!-- JDBC connection pool (use the built-in) -->
23         <property name="connection.pool_size">10</property>
24
25         <!-- SQL dialect -->
26         <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
27         <!-- Echo all executed SQL to stdout -->
28         <property name="show_sql">true</property>
29
30         <!-- Drop and re-create the database schema on startup -->
31      <!--   <property name="hbm2ddl.auto">create</property>-->
32
33         <!-- Names the annotated entity class -->
34              <mapping class="com.qls.domain.DiaoChan"/>
35     </session-factory>
36
37 </hibernate-configuration>

然后再oracle数据库中创建diaoChan这张表:

sql语句如下:

1 create table diaoChan(
2  id number(2) primary key not null,
3  name varchar2(30) ,
4    height number(2)
5   );

然后再oracle数据库创建一个序列,用于主键生成策略用的。

sql语句如下:

1 create sequence sixi start with 1 increment by 1;

写一个hibernate的domain对象:

代码如下:

package com.qls.domain;

import javax.persistence.*;

/**
 * Created by 秦林森 on 2017/5/20.
 */
@Entity
@Table(name = "diaoChan")
public class DiaoChan {
    private int id;
    private String name;
    private int height;

   @Id
   @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "people")
//其中上行的generator中的内容必须和下面这行的name表示一致。
   @SequenceGenerator(name = "people",sequenceName = "sixi",initialValue = 1,allocationSize = 1)
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
    @Column(name ="name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "height")
    public int getHeight() {
        return height;
    }

    public void setHeight(int height) {
        this.height = height;
    }
}

然后写一个Test类主要是向表中插入一条数据:

代码如下:

 1 package com.qls.test;
 2
 3 import com.qls.domain.DiaoChan;
 4 import org.hibernate.Session;
 5 import org.hibernate.SessionFactory;
 6 import org.hibernate.Transaction;
 7 import org.hibernate.cfg.Configuration;
 8
 9 /**
10  * Created by 秦林森 on 2017/5/20.
11  */
12 public class Test2 {
13     public static void main(String[] args) {
14         SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
15         Session session = sessionFactory.openSession();
16         DiaoChan diaoChan = new DiaoChan();
17         diaoChan.setName("崇祯");
18         diaoChan.setHeight(10);
19         Transaction tx = session.beginTransaction();//开启事务。
20         session.save(diaoChan);
21         tx.commit();//提交事务。
22         session.close();//关闭会话。
23     }
24 }

运行Test2之后就会在diaoChan这张表中插入一条数据:

查询结果如下所示:

1 SQL> select *from diaochan;
2
3  ID NAME                           HEIGHT
4 --- ------------------------------ ------
5   3 貂蝉                               12
6   4 崇祯                               10

上面的结果是因为我运行了两次的原因。

时间: 2024-10-16 03:19:38

hibernate用注解的方式实现orm的相关文章

hibernate用配置文件的方式实现orm

本文主要讲用配置文件的方式讲如何把一个对象和数据库中的表关联起来,其实用配置文件本质是和用注解的方式是一样的. 思路:1.写一个domain对象(如Person.java) 2.写这个domain对象的配置文件:Person.hbm.xml.这个配置文件主要是把damain对象的属性和列名进行指定.以及domain的表名.主键生成策略. 3.在hibernate_cfg.xml中映射到Person.hbm.xml : <mapping resource="com/qls/configura

hibernate使用注解的方式进行多对一关联

1 添加支持jap注解的包: 2 在持久化类中配置注解: 3 在配置中配置映射: 4 用 AnnotationConfigurration配置: 5 常用注解: @Entity  表示持久化类: @Id     主键 @GeneratedValue  主键自增 @ManyToOne(cascade=(CascadeType.ALL))       所有操作进行级联 @@OneToMany(cascade=(CascadeType.ALL),mappedBy="classes")   m

使用注解的方式搭建基本hibernate和struts2运行环境

创建dynamic web project 在webcontent——web-inf——lib 中添加相应的需要的jar包,jar包在网上有很多资源,就不进行说明了 搭建hibernate环境 在src下 编写hibernate.xml文件 编写实体类 注意 : hibernate.xml文件中的 属性<property name="hbm2ddl.auto">create </property> 根据你的程序的配置 在初始化hibernate环境的时候 反向生

《Java从入门到放弃》入门篇:使用注解的方式配置hibernate映射关系

之前我们都是使用配置文件的方式来生成的代码,虽然和JDBC比较简单了很多,但每次都在修改时需要既改实体类又改映射文件.还是有点麻烦. 所以,这一篇,我们来说说使用注解的方式来在接在实体类上配置映射关系. 第一步:新建一个项目,或者把之前项目中的实体类.映射文件,还有hibernate中的mapping标签都删除,然后在DBBrowser中再次生成实体类.如下图: 红框中的选项就表示直接在POJO上以注解的方式加上映射关系.注意括号内的hibernate版本,必须是3.2及以上的才行. 生成后的实

hibernate annotation注解方式来处理映射关系

在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,我在试了这两种方式以后,发现使用annotation的方式可以更简介,所以这里就简单记录下通过annotation来配置各种映射关系,在hibernate4以后已经将annotation的jar包集成进来了,如果使用hibernate3的版本就需要引入annotation的jar包. 一.单对象操作 @Entity

基于java注解实现自己的orm框架

ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关系. 现在常见的ORM框架比如Hibernate和mybatis,都是采用了ORM的方式,基本原则就是类-表(Table).属性-列(Column)这样的对应,所以一个对象就能表示数据表中的一行数据啦. 本文转自http://m.blog.csdn.net/woshisangsang/article/details

hibernate基于注解的维护权反转:@OneToMany(mappedBy=)

背景说明:首先是SSH环境下,对象基于注解的方式映射到数据库: 昨天遇到一个比较纠结的问题,@OneToMany(mappedBy="xxx"), mappedBy属性有什么用,然后是写在哪一边? 还有一个问题是:@JoinColumn(name="xxxxx"),JoinColumn有什么用? 先贴出最初的代码:一些基本的注解,在一对多的关系上没有使用JoinColumn和mappedBy属性 部门类:主要是第33.34行 1 package com.lizhou

JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring? Spring是分层的JavaSE/EE full-stack(一站式)轻量级开源框架. 所谓分层: SUN提供的EE的三层结构:web层.业务层.数据访问层(也称持久层,集成层). Struts2是web层基于MVC设计模式框架. Hibernate是持久的一个ORM的框架. 所谓一站式:Spring框架有对三层的每层解决方案.

Hibernate初学---注解配置

ssh框架是每个java程序员的基本功,工作中虽然没有用到,还是学习一下,做点学习笔记,算是一点积累吧. 废话不多说,先上手来一个简单的demo,感受一把. 开发工具:myeclipse 10 数据库:mysql 创建个简单的java工程, 第一步,创建一个学生类,代码如下: package com.huawei.vo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.p