项目结构:
在这里有必要跟大家说说Hibernate中的各个jar包的含义:。。。。。上面的log4j-1.2.11.jar包没有都可以哦!!!
1 /** 2 * 3 */ 4 package com.b510.hibernate.readme; 5 6 /** 7 * @author hongten<br> 8 * @date 2013-3-25 9 */ 10 public class ReadMe { 11 /** 12 * Hibernate中各个jar文件的含义: 13 * 14 * Hibernate的主要类库: 15 * ----------// begin //----------------- 16 * hibernate3.jar Hibernate主类库 17 * commons-collections-3.1.jar Commons的集合类库 18 * antlr-2.7.6.jar Java开源语法分析生成器 19 * dom4j-1.6.1.jar 解析XML的类库 20 * javassist-3.12.0.GA.jar 开源的分析,编辑和创建Java自己码的类库 21 * slf4j-api-1.6.6.jar 各种日志处理接口 22 * slf4j-simple-1.6.6.jar 各种日志处理接口的实现 23 * jta-1.1.jar Java中的事务处理API 24 * ----------// end 8个 //----------------- 25 * 26 * 数据库连接类库: 27 * ----------// begin //----------------- 28 * mysql-connector-java-5.1.22-bin.jar mysql数据库连接类库 29 * ----------// end 1个 //----------------- 30 * 31 * Hibernate的注解Annotation类库: 32 * ----------// begin //----------------- 33 * hibernate-commons-annotations-4.0.1.Final.jar 34 * hibernate-jpa-2.0-api-1.0.1.Final.jar 35 * ----------// end 2个 //----------------- 36 * 37 * 38 * 39 * Hibernate的注解EntityManager类库: 40 * ----------// begin //----------------- 41 * hibernate-entitymanager.jar 42 * jboss-archive-browsing.jar 43 * ----------// end 2个 //----------------- 44 * 45 * 46 * Hibernate的注解org/apache/commons/logging/LogFactory类库: 47 * 如果缺少,会出现:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 48 * ----------// begin //----------------- 49 * commons-logging-1.0.4.jar 50 * ----------// end 1个 //----------------- 51 * 52 * 53 * Hibernate的注解org/jboss/logging/BasicLogger类库: 54 * 如果缺少,会出现:java.lang.NoClassDefFoundError: org/jboss/logging/BasicLogger 55 * ----------// begin //----------------- 56 * jboss-logging-3.0.0.GA.jar 57 * ----------// end 1个 //----------------- 58 * 59 * 60 * 共:15个 61 */ 62 }
运行结果:
=================================================================
代码部分:
=================================================================
/hibernate_demo/src/com/b510/hibernate/bean/Student.java
1 /** 2 * 3 */ 4 package com.b510.hibernate.bean; 5 6 import javax.persistence.Column; 7 import javax.persistence.Entity; 8 import javax.persistence.GeneratedValue; 9 import javax.persistence.Id; 10 11 /** 12 * 学生类 13 * @author hongten<br> 14 * @date 2013-3-25 15 */ 16 @Entity 17 public class Student { 18 19 private Integer id; 20 /** 21 * 姓名 22 */ 23 private String name; 24 /** 25 * 性别 26 */ 27 private String sex; 28 /** 29 * 学号 30 */ 31 private String no; 32 /** 33 * 年龄 34 */ 35 private int age; 36 37 @Id 38 @GeneratedValue 39 public Integer getId() { 40 return id; 41 } 42 43 public void setId(Integer id) { 44 this.id = id; 45 } 46 47 public String getName() { 48 return name; 49 } 50 51 public void setName(String name) { 52 this.name = name; 53 } 54 55 public String getSex() { 56 return sex; 57 } 58 59 public void setSex(String sex) { 60 this.sex = sex; 61 } 62 63 public String getNo() { 64 return no; 65 } 66 67 public void setNo(String no) { 68 this.no = no; 69 } 70 71 @Column(columnDefinition = "int default 0") 72 public int getAge() { 73 return age; 74 } 75 76 public void setAge(int age) { 77 this.age = age; 78 } 79 80 }
/hibernate_demo/src/com/b510/hibernate/utils/EntityManagerUtil.java
1 /** 2 * 3 */ 4 package com.b510.hibernate.utils; 5 6 import javax.persistence.EntityManager; 7 import javax.persistence.EntityManagerFactory; 8 import javax.persistence.Persistence; 9 10 /** 11 * EntityManager工具类 12 * @author hongten<br> 13 * @date 2013-3-25 14 */ 15 public class EntityManagerUtil { 16 17 private static final String PERSISTENCE_UNIT_NAME = "myPersistence"; 18 private static final EntityManagerFactory ENTITY_MANAGER_FACTORY = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 19 private static final EntityManager ENTITY_MANAGER; 20 21 private EntityManagerUtil(){ 22 //不做任何事儿 23 } 24 25 //创建EntityManager实例 26 static { 27 ENTITY_MANAGER = ENTITY_MANAGER_FACTORY.createEntityManager(); 28 } 29 30 /** 31 * 获取EntityManager实例 32 * @return 33 */ 34 public static EntityManager getEntityManagerInstance(){ 35 return ENTITY_MANAGER == null ? ENTITY_MANAGER_FACTORY.createEntityManager() : ENTITY_MANAGER; 36 } 37 38 }
/hibernate_demo/src/com/b510/hibernate/test/StudentTest.java
1 /** 2 * 3 */ 4 package com.b510.hibernate.test; 5 6 import java.util.List; 7 8 import javax.persistence.EntityManager; 9 import javax.persistence.EntityTransaction; 10 11 import com.b510.hibernate.bean.Student; 12 import com.b510.hibernate.utils.EntityManagerUtil; 13 14 /** 15 * 测试类 16 * @author hongten<br> 17 * @date 2013-3-25 18 */ 19 public class StudentTest { 20 21 public static void main(String[] args) { 22 //studentAdd(); 23 studentList(); 24 //studentFindById(new Integer(1)); 25 //studentMerge(); 26 } 27 28 /** 29 * 添加一条记录 30 */ 31 public static void studentAdd(){ 32 EntityManager entityManager = EntityManagerUtil.getEntityManagerInstance(); 33 EntityTransaction entityTransaction = entityManager.getTransaction(); 34 Student student = new Student(); 35 student.setName("Tom Jhone"); 36 student.setAge(21); 37 student.setSex("女"); 38 student.setNo("2009081513"); 39 40 entityTransaction.begin(); 41 entityManager.persist(student); 42 entityTransaction.commit(); 43 entityManager.close(); 44 } 45 46 /** 47 * 查询所有的记录 48 */ 49 @SuppressWarnings("unchecked") 50 public static void studentList(){ 51 EntityManager entityManager = EntityManagerUtil.getEntityManagerInstance(); 52 List<Student> students = entityManager.createQuery("from Student").getResultList(); 53 54 for(Student student : students){ 55 System.out.println("学号:"+student.getNo()+" 姓名:"+student.getName()+" 性别:"+student.getSex()+" 年龄:"+student.getAge()); 56 } 57 58 entityManager.close(); 59 } 60 61 /** 62 * 根据id查询出相应记录 63 */ 64 public static void studentFindById(Integer id){ 65 EntityManager entityManager = EntityManagerUtil.getEntityManagerInstance(); 66 Student student = entityManager.find(Student.class, id); 67 if(student != null){ 68 System.out.println("学号:"+student.getNo()+" 姓名:"+student.getName()+" 性别:"+student.getSex()+" 年龄:"+student.getAge()); 69 } 70 71 entityManager.close(); 72 } 73 74 /** 75 * 更新数据 76 */ 77 public static void studentMerge(){ 78 EntityManager entityManager = EntityManagerUtil.getEntityManagerInstance(); 79 EntityTransaction entityTransaction = entityManager.getTransaction(); 80 entityTransaction.begin(); 81 Integer id = 2; 82 Student student = entityManager.find(Student.class, id); 83 84 if(student != null){ 85 System.out.println("更新前...."); 86 System.out.println("学号:"+student.getNo()+" 姓名:"+student.getName()+" 性别:"+student.getSex()+" 年龄:"+student.getAge()); 87 student.setName("Hanyuan"); 88 entityManager.merge(student); 89 entityTransaction.commit(); 90 } 91 System.out.println("更新后...."); 92 studentFindById(id); 93 entityManager.close(); 94 } 95 96 }
/hibernate_demo/src/META-INF/persistence.xml
1 <persistence xmlns="http://java.sun.com/xml/ns/persistence" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 4 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 5 version="2.0"> 6 7 <persistence-unit name="myPersistence"> 8 9 <provider>org.hibernate.ejb.HibernatePersistence</provider> 10 <properties> 11 <property name="hibernate.archive.autodetection" value="class" /> 12 <property name="hibernate.show_sql" value="true" /> 13 <property name="hibernate.format_sql" value="false" /> 14 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> 15 <property name="use_sql_comments" value="true" /> 16 17 <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 18 <property name="hibernate.connection.url" value="jdbc:mysql://10.5.116.107:3306/mytest?characterEncoding=UTF-8" /> 19 <property name="hibernate.connection.username" value="root" /> 20 <property name="hibernate.connection.password" value="root" /> 21 <property name="hibernate.hbm2ddl.auto" value="update" /> 22 </properties> 23 </persistence-unit> 24 25 </persistence>
很多初学者很头疼的一件事儿就是,老是配置不好Hibernate,其原因多数是Hibernate中的jar包不是很明白....
这里提供源码下载,希望能帮助那些该帮助的人....
源码下载:http://files.cnblogs.com/hongten/hibernate_demo.rar
下载源码的时候,请进行一次评论....谢谢...最后希望能帮助那些该帮助的人....
相关推荐
总之,Hibernate Annotation为Java开发者提供了一种直观且强大的方式来处理数据库操作,让ORM变得更加简单易用。随着对它的不断学习和实践,你将能够更好地应对复杂的业务场景,提高软件的稳定性和可维护性。
在数据库设计中,外键(Foreign Key)是用来建立和加强两个表之间联系的字段,它指向另一个表的主键,确保数据的一致性和完整性。在一对一关系中,两个实体之间通常会有一个共享的唯一标识,即一个实体的主键同时...
【标签】"源码"提示我们这个压缩包可能包含了一份可运行的代码示例,用于演示Hibernate的用法。"工具"可能指的是Hibernate作为Java开发中的一个工具库,用于简化数据库操作。 【文件名称列表】"hibernate_demo_1_...
在Java的持久化框架中,Hibernate是一个非常常用且强大的ORM(对象关系映射)工具,它使得开发者可以方便地将数据库操作转化为面向对象的方式。在实际的项目开发中,我们经常遇到各种各样的关联关系,比如一对一、一...
这个"spring+hibernate annotation 完整示例,带数据库脚本"的项目,旨在提供一个全面的示例,帮助开发者了解如何在实际项目中结合Spring和Hibernate使用注解来实现数据访问。下面我们将深入探讨这些知识点。 1. **...
【标题】"第一个Hibernate with Annotation程式(转)" 涉及到的是在Java开发中使用Hibernate ORM框架的一个基本示例,特别强调了使用注解(Annotation)的方式进行配置。Hibernate是一个强大的对象关系映射(ORM)...
总的来说,"完整版spring hibernate整合采用annotation"是一个涵盖多个知识点的主题,包括Spring注解驱动开发、Hibernate的ORM注解、Spring与Hibernate的整合配置、事务管理以及相关的开发工具使用。通过深入学习和...
Spring是一个全面的后端开发框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,而Hibernate则是一个强大的对象关系映射(ORM)工具,简化了Java应用程序对数据库的操作。当结合使用时,...
【hibernate3学习源码】是一个针对关系型数据库对象持久化的开源框架,它简化了Java应用程序与数据库之间的交互。本资源包含多个示例,涵盖了Hibernate中的四种主要关联关系:一对一(OneToOne)、一对多(OneToMany...
Hibernate Validator 是一个流行的开源验证框架,它基于JSR 303/JSR 349(Bean Validation)标准,为Java应用程序提供了强大的数据验证功能。"Hibernate Validator Annotation Processor 5.1.0.CR1"是该框架的一个...
在本篇《Hibernate源码解析(二)》中,我们将深入探讨Hibernate这一强大的Java对象关系映射(ORM)框架的内部工作原理。这篇博客旨在帮助开发者更好地理解Hibernate的核心机制,以便于更高效地利用它来处理数据库...
**标题:“Hibernate继承映射(Annotation)详解”** 在Java持久化框架Hibernate中,继承映射是一种关键特性,它允许开发者将对象模型的继承结构映射到数据库的表结构。在传统的面向对象编程中,继承是实现代码复用和...
在Java开发中,Spring框架和Hibernate是两个非常重要的组件,它们分别用于依赖注入和对象关系映射。在实际项目中,事务管理是确保数据一致性的重要环节。本篇将详细介绍如何在Spring 3和Hibernate 4中配置声明式事务...
标题中的"people_java编程_enjoyz2u_people_源码.zip"表明这是一份与Java编程相关的源码压缩包,可能包含某个项目或应用的源代码。从描述中我们并没有获得更多的具体信息,但可以推测这可能是个人或者团队分享的学习...
Spring作为一个全面的框架,提供依赖注入(DI)和面向切面编程(AOP),以及事务管理等功能;Hibernate则是一个持久化框架,简化了数据库操作。将这三者集成可以构建出高效、可维护的Web应用。下面将详细介绍如何...
在本文中,我们将深入探讨如何使用IntelliJ IDEA(Idea)创建一个Spring Boot项目,并将其与Hibernate ORM框架整合。Spring Boot简化了Spring应用程序的初始设置和配置,而Hibernate则是Java领域广泛使用的对象关系...
2. @Transient:标记一个属性为非持久化,Hibernate将忽略该属性。 3. @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_name"):使用序列生成主键,需要在数据库中创建对应的序列。 4. @...