`
elite20130514
  • 浏览: 46925 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hibernate 映射基本属性

阅读更多

hibernate 映射基本属性

新建一个po,News

public class News {
	private Long id;
	private String title;
	private String content;
	private String fullContent;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getfullContent() {
		return fullContent;
	}
	public void setfullContent(String fullContent) {
		this.fullContent = fullContent;
	}
}

 对应的News.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.demo.po">
    <class name="News" table="news" lazy="true">
        <id name="id" column="news_id">
        	<!-- generate optimal identity strategy according to the configured dialect -->
            <generator class="native"/>
        </id>
      	<property name="title" type="string" not-null="true"/>
      	<property name="content" type="string" />
      	<!-- 通过formula指定该属性值没有对应的实际数据列
      		该属性值将由系统根据表达式来生成 -->
      	
       	<property name="fullContent"
      		formula="(select concat(nt.title,nt.content)
     			from news nt where nt.news_id = news_id)"/>
    </class>
</hibernate-mapping>

 测试类:NewsManager.java

 

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.hibernate.demo.po.News;
/**
 * 
 * ---test1---
 * 打开注释1的内容,保存news到数据库,然后把注释1重新注释掉,然后打开注释2,观察控制台输出的sql
 * 会发现,getfullContent()取到了你要的值,但是观察数据库news表,并没有fullContent字段
 * 
 * @author apprentice
 *
 */
public class NewsManager {
	public static void main(String[] args){
		//实例化Configuration,默认加载hibernate.cfg.xml
		Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
		//工厂模式,创建sessionFactory   
		SessionFactory sf = cfg.buildSessionFactory();
		//实例化session
		Session session = sf.getCurrentSession();
		//事务开始
		Transaction tx = session.beginTransaction();
/*      注释1		
		News news = new News();
		news.setTitle("学海无涯");
		news.setContent("泰山不辞杯土,大海不拒细流");
		session.save(news); 
*/
/*		注释2
		News news2 =(News)session.load(News.class,new Long(1));
		System.out.println(news2.getfullContent());
		tx.commit();
*/
	}
}

 test1对应的News.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.demo.po">
    <class name="News" table="news" lazy="true">
        <id name="id" column="news_id">
        	<!-- generate optimal identity strategy according to the configured dialect -->
            <generator class="native"/>
        </id>
      	<property name="title" type="string" not-null="true"/>
      	<property name="content" type="string" />
      	<!-- 通过formula指定该属性值没有对应的实际数据列
      		该属性值将由系统根据表达式来生成 -->
       	<property name="fullContent"
      		formula="(select concat(nt.title,nt.content)
     			from news nt where nt.news_id = news_id)"/>
    </class>
</hibernate-mapping>

 对应的news表结构

 

 

CREATE TABLE news(
	news_id BIGINT AUTO_INCREMENT PRIMARY KEY,
	title VARCHAR(255) NOT NULL,
	content VARCHAR(255)
)

 test2 

 

修改News.hbm.xm

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.hibernate.demo.po">
    <class name="News" table="news" lazy="true">
        <id name="id" column="news_id">
        	<!-- generate optimal identity strategy according to the configured dialect -->
            <generator class="native"/>
        </id>
      	<property name="title" type="string" not-null="true"/>
      	<property name="content" type="string" />
     			
     	<!-- 数据库定义了一个insert 触发器,设置full_content -->	
		<property name="fullContent"
			column="full_content" type="string"
			generated="insert"/> 
    </class>
</hibernate-mapping>

 news表结构改为

 

 

CREATE TABLE news(
	news_id BIGINT AUTO_INCREMENT PRIMARY KEY,
	title VARCHAR(255) NOT NULL,
	content VARCHAR(255)
	full_content VARCHAR(255)
)

 对应的insert触发器

 

 

DELIMITER |
CREATE TRIGGER tri_full_content_gen BEFORE INSERT ON news
	FOR EACH ROW BEGIN
		SET new.full_content=CONCAT(new.title,new.content);
		END;
		|

 测试代码:

 

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.hibernate.demo.po.News;
/**
 * 
 * ---test2---
 * 
 * @author apprentice
 *
 */
public class NewsManager {
	public static void main(String[] args){
		//实例化Configuration,默认加载hibernate.cfg.xml
		Configuration cfg = new Configuration().configure("hibernate.cfg.xml");
		//工厂模式,创建sessionFactory   
		SessionFactory sf = cfg.buildSessionFactory();
		//实例化session
		Session session = sf.getCurrentSession();
		//事务开始
		Transaction tx = session.beginTransaction();
	
		News news = new News();
		news.setTitle("学海无涯");
		news.setContent("泰山不辞杯土,大海不拒细流");
		session.save(news); 
		tx.commit();
	}
}

 结果截图:



 

 

 

 

  • 大小: 13.1 KB
分享到:
评论

相关推荐

    Myeclipse生成Hibernate映射文件

    而MyEclipse作为一款强大的Java集成开发环境,提供了对Hibernate的良好支持,包括自动生成Hibernate映射文件的功能。本文将详细介绍如何在MyEclipse中创建和使用Hibernate映射文件。 首先,理解Hibernate映射文件...

    java根据实体类生成Hibernate映射文件

    首先,我们需要了解Hibernate映射文件的基本结构。通常,一个映射文件以`.hbm.xml`为扩展名,它使用XML格式来描述Java类和数据库表的对应关系。映射文件包含了类名、表名、字段及其数据类型等信息。例如: ```xml ...

    Hibernate映射配置实例大全(详细总结)

    综上所述,"Hibernate映射配置实例大全"涵盖的内容广泛,包括基本的配置文件设置、实体类的XML和注解映射、集合映射、加载策略、事务管理和缓存配置等。通过深入学习和实践这些实例,开发者可以熟练地运用Hibernate...

    hibernate array 数组映射

    在Hibernate中,数组映射是将数据库表的一列或多列数据映射到Java对象的一个数组属性上。数组可以是基本类型数组或对象类型的数组。这种映射方式简化了数据访问,并提高了代码的可读性和可维护性。 ### 配置数组...

    Hibernate映射配置详解

    在Hibernate中,`Session`是操作数据库的基本单元,它负责管理对象的状态。而`Transaction`则用于处理数据库事务,确保数据的一致性。通常在每次数据库操作前后,都会进行`beginTransaction`和`commit/...

    hibernate实体映射文件字段设置默认值

    首先,我们需要了解一个基本的Hibernate映射文件结构: ```xml &lt;hibernate-mapping&gt; &lt;!-- 映射类的属性 --&gt; &lt;/hibernate-mapping&gt; ``` 这里的`&lt;class&gt;`标签表示映射到特定的Java类,其属性`name`指定了对应的...

    hibernate映射心得 原创

    **标题解析:**“hibernate映射心得 原创” 这个标题表明了本文将主要探讨作者在使用Hibernate框架进行对象关系映射(ORM)时的个人理解和经验。Hibernate是一个流行的Java ORM框架,它允许开发者用面向对象的方式...

    myeclipse自动生成hibernate映射文件.

    下面我们将详细介绍如何在MyEclipse中自动生成Hibernate映射文件。 首先,我们需要建立数据库连接。在MyEclipse中,可以通过`Window`菜单打开`MyEclipse Database Explorer`视图。在这里,你可以创建新的数据库连接...

    深入理解hibernate映射文件

    ### 深入理解Hibernate映射文件 #### Hibernate概述与角色 Hibernate是一个开源的对象关系映射(ORM)框架,它让开发人员能够用面向对象的方式处理数据库操作,从而避免了大量的SQL编写工作。Hibernate的设计理念...

    myeclipse自动生成hibernate映射文件

    自动生成Hibernate映射文件的功能可以帮助我们快速构建项目,避免手动编写XML配置的繁琐工作。 要自动生成Hibernate映射文件,首先确保你已安装了MyEclipse的Hibernate插件。接下来,按照以下步骤操作: 1. **创建...

    JAVA数据类型与Hibernate的类型映射

    此外,自定义对象的映射是Hibernate映射中的一个重要部分。通过在实体类上使用@Entity注解,并使用@Id注解指定主键字段,可以将一个Java类映射到数据库的一张表。字段则通过@Column注解来指定列名和属性,如长度、...

    hibernate 映射模板

    在本篇文章中,我们将深入探讨Hibernate映射模板及其相关知识点。 首先,我们要理解的是Hibernate的核心概念——对象关系映射。ORM允许开发者用面向对象的方式来处理数据库,避免了直接编写SQL语句,提高了代码的...

    商城数据库hibernate映射实例

    在构建网上商城系统时,数据库的设计与管理是一个关键环节,特别是在使用对象关系映射(ORM)框架如Hibernate时。Hibernate是一种流行的Java ORM框架,它允许开发者以面向对象的方式来操作数据库,减少了传统SQL代码...

    Hibernate 注解映射

    一、 环境搭建和基本映射 在使用 Hibernate 注解映射之前,需要添加相关的 jar 包,包括 hibernate-annotations.jar、ejb3-persistence.jar 和 hibernate-commons-annotations.jar。 在实体类中,可以使用 JPA 的...

    XDoclet 与Hibernate 映射

    1. `&lt;project&gt;`:根元素,定义项目的基本属性,如default(默认目标)、basedir(基目录)、name(项目名称)和description(项目描述)。 2. `&lt;target&gt;`:定义构建目标,可以有依赖关系(depends),并可以设置条件...

    Hibernate实体映射

    在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate中实体映射的一对一关联关系的两种实现方式:共享主键方式和唯一外键方式。 首先,我们要理解...

    [原]Hibernate集合映射

    例如,如果集合元素是基本类型,我们可以直接映射;如果是复杂类型的对象,就需要指定对应的实体类。 3. **一对一(One-to-One)映射** 在集合映射中,一对一关系通常表现为单个实体与集合的关系。例如,一个用户...

    javaee实验五 大学本科生 hibernate

    【JavaEE实验五:大学本科生Hibernate】实验主要目标在于让学生掌握Hibernate开发环境的搭建,理解ORM框架的概念,以及深入理解Hibernate映射文件和配置文件的使用。Hibernate是一个强大的ORM(对象关系映射)框架,...

Global site tag (gtag.js) - Google Analytics