Hibernate之映射实现

其实之前的例子中也涉及到了映射。Hibernate的特点就是利用Hibernate.cfg.xml配置数据库相关信息,xxx.hbm.xml配置对象与数据库表的映射信息。

这次写的例子涉及到大文本信息的存储和图片信息在数据库中的存储,比较有实用价值。

实体信息

package test.hibernate.domain;

import java.util.Date;

public class User {

	private int id;
	private String name;
	private int age;
	private Date birthday;
	private String desc;//说明
	private byte[] photo;//头像图片

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public byte[] getPhoto() {
		return photo;
	}
	public void setPhoto(byte[] photo) {
		this.photo = photo;
	}

	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "[User:id="+id+",name:"+name+"]";
	}
}

测试类

package test.hibernate.domain;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;

public class App {
	private static SessionFactory sessionFactory;
	static {
		Configuration cfg = new Configuration();
		cfg.configure("hibernate.cfg.xml");
		sessionFactory = cfg.buildSessionFactory();
	}

	@Test
	public void testSave() throws Exception {

		// 读取图片
		InputStream in = new FileInputStream("E:/图标/my02.png");
		byte[] photo = new byte[in.available()];
		in.read(photo);
		in.close();

		// 创建对象
		User user = new User();
		user.setName("张三");
		user.setAge(21);
		user.setBirthday(new Date());
		user.setDesc("一篇论文。。。。。。。。。。。。。。。。。。。。。。。。");
		user.setPhoto(photo);

		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		session.save(user);
		transaction.commit();
		session.close();// 关闭session,释放资源
	}

	@Test
	public void testGet() throws Exception {
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		User user = (User) session.get(User.class, 1);
		System.out.println(user.getId());
		System.out.println(user.getName());
		System.out.println(user.getBirthday());
		System.out.println(user.getDesc());

		// 将图片写到F盘的copy.png
		OutputStream outputStream = new FileOutputStream("F:/copy.png");
		outputStream.write(user.getPhoto());
		outputStream.close();

		transaction.commit();
		session.close();
	}
}
<img src="http://img.blog.csdn.net/20150714095500916?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);" />

主配置文件

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

<hibernate-configuration>
	<session-factory name="foo">
	<!-- 配置数据库信息 -->
	    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/hibernate_2015</property>
		<!-- 可简写为<property name="connection.url">jdbc:mysql:///hibernate_2015</property> -->
		<property name="connection.username">root</property>
		<property name="connection.password">686175</property>
		<!-- 显示生成的sql语句,不写的话默认是false -->
		<property name="show_sql">true</property>
		<property name="hbm2ddl.auto">update</property>

		<mapping resource="test/hibernate/domain/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

加了hbm2ddl.auto属性,用于更新表结构

在MySQL- Front里查看

版权声明:本文为博主原创文章,未经博主允许不得转载。http://blog.csdn.net/lindonglian

时间: 2024-10-10 12:43:38

Hibernate之映射实现的相关文章

hibernate关联映射

本文可作为北京尚学堂马士兵hibernate课程的学习笔记. hibernate的映射,主要分为一对一,一对多,多对一,多对多,同时还要单向与双向的区别. OK,不要纠结于名字,我们开始看例子. 一对一单向 老公是一个实体,老婆也是一个实体. 一个老公只有一个老婆,同时一个老婆也只有一个老公. 上面的关系就叫做一对一. 什么叫单向呢. 看代码: package com.bjsxt.hibernate; @Entity public class Husband { private int id;

hibernate enum映射详解

hibernate enum映射详解 在这里介绍注解的形式,如果想要了解XML配置的方式,可以自行查找相关资料. 例如以下Entity @Entity @Table(name = "t_user") public class User implements Serializable { /** * */ private static final long serialVersionUID = -9042615274714038279L; @Id @GeneratedValue(stra

【SSH快速进阶】——Hibernate继承映射:每个具体类映射一张表

上篇文章说的是每个类映射一张表,不管是父类还是子类.与上篇文章不同的是,这里是每个"具体类"映射一张表,什么意思呢?就是让每个子类(具体的.有意义的类)映射一张表. 场景 与上篇文章场景一样,如下类图 上图中Pig类和Bird类继承Animal类,要让每个具体类映射一张表,就是只映射Pig和Bird,如下表所示: (表 1) 上面的表有个特点就是,t_pig和t_bird的主键永远都不会相同.因为表面上看起来这是两张表,但实际上存储的都是动物(同一类型),所以还可以看做是一张表. 配置

Java学习笔记-Hibernate关系映射

1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1(多对一,一对多): http://www.cnblogs.com/zilong882008/archive/2011/11/05/2236559.html 3. Hibernate关联映射 http://www.cnblogs.com/huxi/archive/2009/12/15/1624988.

Hibernate的映射机制

对象关系映射(Object Relation Mapping(ORM))是一种为了解决面向对象与面向关系数据库互不匹配现象的技术,简而言之 ORM是通过使用描述对象之间映射的元数据,将java程序中的对象自动持久化到关系数据库中,这种映射机制从本质上来说 其实就是将数据从一种形式转化为另一种形式 Hibernate的基本映射数据类型 Hibernate的基本映射数据类型是java基本类型与标准SQL类型相互转化的桥梁,其关系 java类型----------->Hibernate的映射数据类型-

使用oracle数据库和MySQL数据库时hibernate的映射文件.hbm.xml的不同

如果是使用oracle数据库,那么hibernate的映射文件.hbm.xml如下: <id name="xuehao" column="xuehao"> </id> 这个id不是数据库自动生成的,这需要注意:而且这些字段必须和实体类中相对应,实体类中还需要对应的get()方法和set()方法. 因为oracle数据库中的id都是自动生成的,所以这里不需要写数据库的id,这和MySQL数据库有很大区别:另外,MySQL数据库建表时必须指明id

hibernate 继承映射

对于面向对象的程序设计语言而言,继承和多态是两个最基本的概念.Hibernate 的继承映射可以理解持久化类之间的继承关系.例如:人和学生之间的关系.学生继承了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到. Hibernate支持三种继承映射策略: 使用 subclass 进行映射:将域模型中的每一个实体对象映射到一个独立的表中,也就是说不用在关系数据模型中考虑域模型中的继承关系和多态. 使用 joined-subclass 进行映射: 对于继承关系中的子类使用同一个表

hibernate的映射类型

hibernate的映射类型 hibernate MySQL映射类型 1.Hibernate的映射类型 hibernate mysql映射类型 Hibernate 映射类型 Java 类型 标准 SQL 类型 大小和取值范围 integer 或者 int int 或者 java.lang.Integer INTEGER 4 字节 long long  Long BIGINT 8 字节 short short  Short SMALLINT 2 字节 byte byte  Byte TINYINT

Hibernate基础映射

在说Hibernate映射前,我们先来了解下对象关系映射 ORM.ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现.这样开发人员就可以把对数据库的操作转化为对这些对象的操作.我们来看一张图 通过该图,我们可以看出业务实体,在数据库中表现为关系数据,而在内存中表现为对象.应用程序处理对象很容易,但是很难处理关系数据.ORM做到了关系数据和对象数据之间的映射,可以通过映射关系自动产生SQL语句,在业务逻辑层和数据层之间充当桥梁. Hibernate映射 Hibernate文件

攻城狮在路上(壹) Hibernate(九)--- Hibernate的映射类型

Hibernate采用映射类型作为Java类型和SQL类型的桥梁,对应type属性.分为两种:内置映射类型和客户化映射类型.一.内置映射类型: 1.Java基本类型的Hibernate映射类型: Java基础类型的Hibernate映射类型 Hibernate映射类型 Java类型 标准SQL类型 大小和取值范围 integer或者int int或者java.lang.Integer INTEGER   long long BIGINT   short short SMALLINT   byte