`
lhx1026
  • 浏览: 307049 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

初学hibernate(一)——使用hibernate annotations注解实体

阅读更多

首先,这个demo是使用maven来管理项目的。数据库是使用mysql。首先,使用eclipse建立一个maven的web项目。如果没有maven,可以建一个普通的动态web项目。

 

一、配置文件

 

1、maven的pom.xml文件的内容如下,如果没有使用maven,可以自己手动下载pom.xml中的相应版本的依赖包,当然,junit可以不下。

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>net.kentop</groupId>
	<artifactId>ktui</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>ktui Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>3.3.2.GA</version>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>2.5</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-simple</artifactId>
			<version>1.5.8</version>
		</dependency>
		<dependency>
			<groupId>javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.9.0.GA</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.11</version>
		</dependency>
		<dependency>
			<groupId>hibernate-annotations</groupId>
			<artifactId>hibernate-annotations</artifactId>
			<version>3.3.0.GA</version>
		</dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-commons-annotations</artifactId>
			<version>3.3.0.ga</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>ktui</finalName>

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>1.5</source>
					<target>1.5</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
 

2、该项目的hibernate配置文件在maven建立的web项目中的路径如下:



 其中,hibernate配置文件的内容如下:

 

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/ktui</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property>

        <!--这里是要映射的实体-->
         <mapping class="net.kentop.ktui.entity.AtmTypes"/>
        

    </session-factory>

</hibernate-configuration>

 

二、实体

这里的demo使用的实体内容如下所示:

 

package net.kentop.ktui.entity;

import java.io.Serializable;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name="atm_types")
public class AtmTypes implements Serializable{

	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = -1556433468904091584L;

	/**
	 * 主键
	 */	
	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	private int id;
	
	/**
	 * 应用类型id
	 */
	@Column(name="atmtype_id",nullable=false)
	private String atmTypeId;
	
	/**
	 * 应用类型名称
	 */
	@Column(name="atmtype_name",nullable=false)
	private String atmTypeName;
	
	/**
	 * 应用类型图标路径
	 */
	@Column(name="atmtype_icon")
	private String atmTypeIcon;
	
	/**
	 * 提示信息
	 */
	@Column(name="toolTip")
	private String toolTip;
	
	/**
	 * 扩展信息
	 */
	@Column(name="settings")
	private String settings;
	
	/**
	 * 显示次序
	 */
	@Column(name="orders",nullable=false)
	private int index;
	
	/**
	 * 创建日期
	 */
	@Column(name="created_date",length=10,nullable=false)
	private int createdDate;
	
	/**
	 * 创建人
	 */
	@Column(name="created_user",length=10,nullable=false)
	private String createdUser;
	
	/**
	 * 修改日期
	 */
	@Column(name="revised_date",length=32,nullable=false)
	private int revisedDate;
	
	/**
	 * 修改人
	 */
	@Column(name="revised_user",length=32,nullable=false)
	private String revisedUser;
	
	public AtmTypes(){
		
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getAtmTypeId() {
		return atmTypeId;
	}

	public void setAtmTypeId(String atmTypeId) {
		this.atmTypeId = atmTypeId;
	}

	public String getAtmTypeName() {
		return atmTypeName;
	}

	public void setAtmTypeName(String atmTypeName) {
		this.atmTypeName = atmTypeName;
	}

	public String getAtmTypeIcon() {
		return atmTypeIcon;
	}

	public void setAtmTypeIcon(String atmTypeIcon) {
		this.atmTypeIcon = atmTypeIcon;
	}

	public String getToolTip() {
		return toolTip;
	}

	public void setToolTip(String toolTip) {
		this.toolTip = toolTip;
	}

	public String getSettings() {
		return settings;
	}

	public void setSettings(String settings) {
		this.settings = settings;
	}

	public int getIndex() {
		return index;
	}

	public void setIndex(int index) {
		this.index = index;
	}

	public int getCreatedDate() {
		return createdDate;
	}

	public void setCreatedDate(int createdDate) {
		this.createdDate = createdDate;
	}

	public String getCreatedUser() {
		return createdUser;
	}

	public void setCreatedUser(String createdUser) {
		this.createdUser = createdUser;
	}

	public int getRevisedDate() {
		return revisedDate;
	}

	public void setRevisedDate(int revisedDate) {
		this.revisedDate = revisedDate;
	}

	public String getRevisedUser() {
		return revisedUser;
	}

	public void setRevisedUser(String revisedUser) {
		this.revisedUser = revisedUser;
	}
}

 其中,@Entity声明这个pojo是一个实体bean

@Table注解可以为实体bean映射指定表、目录(catalog)和schema的名字,如果没有定义@Table,则系统自动使用默认值:实体的短类名(不附带包名),name属性的值为对应在数据库中的表名。

 

@Id注解可以将实体bean中的某个属性定义为标识符,即主键。

@GeneratedValue注解定义标识符的生成策略。有以下4种策略

AUTO ——可以是indentity column列类型,或者sequence类型或者table类型,取决于不同的底层数据库

 

TABLE——使用表保存id值

 

IDENTITY ——indentity column

 

SEQUENCE ——sequence

 

@Column注解可以将属性映射到列,使用该注解来覆盖默认值,其中,name属性表示该属性映射的列的名字,length表示该列的长度。nullable表示是否可以为空,默认为true,不能为空。

 

 

三、工具类

 

package net.kentop.ktui.utils;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

	private static final SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
	
	public static Session getSession(){
		return sessionFactory.openSession();		
	}

}

 

四、测试类

 

package net.kentop.ktui.manager;

import net.kentop.ktui.entity.AtmTypes;
import net.kentop.ktui.utils.HibernateUtil;

import org.hibernate.Session;

public class AtmTest {

	public static void main(String args[]){
		saveAtmType();
	}
	
	public static  void saveAtmType(){
		Session session = HibernateUtil.getSession();
		session.beginTransaction();
		
		AtmTypes types = new AtmTypes();
		types.setAtmTypeName("dfsssdf");
		types.setIndex(1);
		types.setAtmTypeId("dsfsfsfsfsf");
		types.setCreatedDate(1212313111);
		types.setCreatedUser("user");
		types.setRevisedDate(1212313111);
		types.setRevisedUser("user");
		session.save(types);
		
		session.getTransaction().commit();
	}
}
 

运行该类,则会自动在数据库中建立对应的表,并且增加一条记录。

 


  • 大小: 4.3 KB
  • 大小: 14.6 KB
0
0
分享到:
评论

相关推荐

    hibernate 和hibernate_annotations(中文API).pdf帮助文档

    在这个“hibernate 和hibernate_annotations(中文API)帮助文档”中,我们将深入探讨Hibernate的核心概念、特性以及如何使用Hibernate Annotations进行对象的持久化。 一、Hibernate核心概念 1. 实体(Entity):在...

    hibernate_annotations spring2.0中文参考手册

    Hibernate Annotations 是 Hibernate 提供的一种机制,通过在 Java 类或字段上添加注解,可以方便地定义实体、属性、关系等数据库映射信息。这种方式简化了传统 XML 配置,使得代码更加清晰、易于维护。 Spring 2.0...

    hibernate注解中英文版

    Hibernate注解是元数据的一种形式,它们允许我们在Java类和属性上直接声明关于如何映射到数据库的信息,避免了XML配置文件的繁琐。通过注解,我们可以指定实体类、属性、关联关系等如何对应到数据库表和字段。 二、...

    hibernate-annotations-3.0-alpha3.zip

    而Hibernate Annotations是Hibernate的一个扩展,它引入了注解支持,使得在Java类中直接进行数据库映射成为可能,极大地提高了开发效率和代码的可读性。这个"hibernate-annotations-3.0-alpha3.zip"压缩包中包含了...

    Hibernate开发lib包

    - 注解驱动:在Hibernate 3.3中,注解成为了一种主流的元数据声明方式,开发者可以使用Java类的注解来定义实体类及其与数据库表的映射关系,如`@Entity`表示实体类,`@Table`定义表名,`@Id`标识主键等。...

    Hibernate中文文档+hibernate annotation +distribution

    其次,hibernate-annotations-3.4.0GA是Hibernate支持JPA(Java Persistence API)的重要组成部分,引入了注解方式来声明对象与数据库表之间的映射关系。例如,`@Entity`表示一个类作为数据库中的表,`@Table`定义...

    hibernate-tutorials_java_hibernate_Eclipse_fallenweg_

    注解是Java中的一种元编程机制,Hibernate利用注解来声明实体类和它们的属性,以及关联关系。本教程将详细介绍如何使用`@Entity`、`@Table`、`@Id`等注解,以及如何进行一对一、一对多、多对多等关联映射。 9. **...

    Hibernate lib

    例如,创建实体类、编写映射文件(XML或使用注解)、配置Hibernate的主配置文件(hibernate.cfg.xml),并利用SessionFactory和Session对象进行数据的增删改查操作。同时,Hibernate的Criteria、HQL(Hibernate ...

    第一个Hibernate代码, Hello Hibernate

    5. **属性映射(Annotations)**:Hibernate支持使用Java注解来映射实体类的属性到数据库的列,如`@Column`、`@GeneratedValue`等。 6. **持久化操作**:通过SessionFactory和Session接口,我们可以实现对象的保存...

    Hibernate的jar包

    9. **通用注解**:`hibernate-commons-annotations`提供了一些常见的ORM注解,供其他Hibernate组件使用。 10. **其他依赖**:`javax`和`common`可能包含了Hibernate依赖的一些基础库,如Java EE的相关API或通用的...

    Getting Started with Hibernate search

    依赖于Apache Lucene——一个强大的全文搜索引擎库,同时也是Java领域事实上的标准解决方案——Hibernate Search为Java开发者提供了一个强大且灵活的搜索解决方案。 ### 安装与配置 为了使用Hibernate Search,...

    Spring + JPA + Hibernate配置

    - `hibernate-annotations.jar` 包含了Hibernate的注解支持,用于在实体类上声明数据库字段。 - `freemarker-2.3.8.jar` 是FreeMarker模板引擎,Spring MVC可以使用它进行视图渲染。 - `javassist.jar` 是一个字节码...

    hibernate的所有必备jar包

    11. hibernate-commons-annotations-5.0.1.Final.jar:Hibernate通用注解库,包含了Hibernate特定的注解,如@Entity、@Table等,这些注解用于在Java类上声明ORM元数据。 这个压缩包的目的是为了方便开发者快速集成...

    Hibernate 最新Jar包-3.5.6

    4. **Hibernate Annotations**:在3.5.6版本中,Hibernate支持使用Java注解来标注实体类,使得实体类的定义更加简洁,无需编写XML配置文件。注解如`@Entity`、`@Table`、`@Column`等,用于标记实体类、表名和字段...

    Hibernate annotation

    【Hibernate注解】是Java持久化框架Hibernate中的一种机制,它允许开发者使用注解来定义对象关系映射(ORM),从而避免XML配置文件。这种方式使得代码更加简洁且易于维护。 【创建注解项目】在开始使用Hibernate...

    hibernate_reference-Hibernate Envers User Guide

    通过一个简短的例子来展示如何使用Hibernate Envers。在这个例子中,用户可以了解到如何对实体进行标记以便于审计,以及如何查询历史版本的数据。 #### 四、配置 - **基本配置**:介绍了启动Envers的基本设置步骤,...

    hibernate hellowrold入门级代码

    在现代的Hibernate实践中,更倾向于使用注解(Annotations)来替代XML映射。 然后,我们需要一个SessionFactory,它是Hibernate的主要工作单元,负责创建Session。SessionFactory通过读取配置文件和映射信息被初始...

    Hibernate 5.0 开发所需全部 14 个包

    10. **hibernate-commons-annotations-5.0.1.Final.jar**:包含Hibernate通用的注解,如@Entity、@Table等,这些注解用于声明Java类为数据库中的实体,并指定它们的映射关系。 以上这些包的集合为开发者提供了完整...

Global site tag (gtag.js) - Google Analytics