Person对象
public class Person implements Serializable {
private static final long serialVersionUID = 1882657656924078522L;
private Integer personId;
private String name;
private Set<Address> adds = new HashSet<Address>();
public Person() {
super();
}
public Person(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Set<Address> getAdds() {
return adds;
}
public void setAdds(Set<Address> adds) {
this.adds = adds;
}
public Integer getPersonId() {
return personId;
}
public void setPersonId(Integer personId) {
this.personId = personId;
}
}
Address对象
public class Address implements Serializable {
private static final long serialVersionUID = 6132530253376016245L;
private Integer addId;
private String decription;
private Person person;
public Address() {
super();
}
public Address(String decription) {
super();
this.decription = decription;
}
public Integer getAddId() {
return addId;
}
public void setAddId(Integer addId) {
this.addId = addId;
}
public String getDecription() {
return decription;
}
public void setDecription(String decription) {
this.decription = decription;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
Person配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="vivi.test.hibernate.Person" table="person">
<id name="personId">
<generator class="identity"></generator>
</id>
<property name="name" />
<set name="adds" lazy="true" inverse="true" cascade="all-delete-orphan">
<key column="person_id"></key>
<one-to-many class="vivi.test.hibernate.Address" />
</set>
</class>
</hibernate-mapping>
Address配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="vivi.test.hibernate.Address" table="address">
<id name="addId">
<generator class="identity"></generator>
</id>
<property name="decription" />
<many-to-one name="person" column="person_id" not-null="true" cascade="none"
class="vivi.test.hibernate.Person" />
</class>
</hibernate-mapping>
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>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">489702</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">utf8</property>
<property name="hbm2ddl.auto">update</property>
<!--<property name="show_sql">true</property>-->
<mapping resource="./vivi/test/hibernate/Address.hbm.xml"/>
<mapping resource="./vivi/test/hibernate/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
log4j属性文件
log4j.rootLogger = DEBUG, stdout
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %5p %c{1}:%L - %m%n
Test测试对象
public class Test {
private final static Log logger = LogFactory.getLog(Test.class);
private static final SessionFactory sessionFactory;
static{
try{
//这里创建SessionFactory将hibernate.cfg.xml文件,放在Src路径下
sessionFactory = new Configuration().configure().buildSessionFactory();
logger.debug("============:) 创建SessionFactory实例成功!:) ============");
}catch(Throwable ex){
logger.debug("============:( 创建SessionFactory实例失败!:( ============");
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static void main(String[] args) {
Test test = new Test();
// 实例化一个新的Person对象,并填充内容
Person person = new Person();
person.setName("静子");
Set<Address> addrs = new HashSet<Address>();
Address addr1 = new Address();
addr1.setDecription("苏州-通安镇同心路");
addr1.setPerson(person);
addrs.add(addr1);
Address addr2 = new Address();
addr2.setDecription("江苏-盐城市射阳县");
addr2.setPerson(person);
addrs.add(addr2);
person.setAdds(addrs);
test.Save(person);
//test.update(1);
//test.delete(2);
test.select();
}
/**
* 添加新对象
* @param person
*/
public void Save(Person person){
try{
//获取Hibernate的Session
Session session = Test.getSessionFactory().getCurrentSession();
session.beginTransaction();
//保存对象
session.save(person);
session.getTransaction().commit();
logger.debug("============:) 保存Person对象---成功!:) ============");
}catch(HibernateException e){
e.printStackTrace();
logger.debug("============:( 保存Person对象---失败!:( ============");
}
}
/**
* 查询对象
*/
public void select(){
try{
//获取Hibernate的Session
Session session = Test.getSessionFactory().getCurrentSession();
session.beginTransaction();
//注意!!! hql语句,针对对象的查询语句(不是表table)
String hql = "from Person";
List<Person> persons = session.createQuery(hql).list();
//在控制台循环输出
for(Person person : persons){
System.out.println();
System.out.println("***********" + person.getName() +"*****************");
Set<Address> adds = person.getAdds();
for(Iterator<Address> iter= adds.iterator(); iter.hasNext(); ){
Address address = iter.next();
System.out.println("*** 地址: " + address.getDecription() + " ***");
}
System.out.println();
}
session.getTransaction().commit();
logger.debug("============:) 查询对象---成功!:) ============");
}catch(HibernateException e){
e.printStackTrace();
logger.debug("============:( 查询对象---失败!:( ============");
}
}
/**
* 更新对象
* @param id
*/
public void update(Integer id){
try{
//获取Hibernate的Session
Session session = Test.getSessionFactory().getCurrentSession();
session.beginTransaction();
//定义要装载对象的ID
Person person = (Person)session.load(Person.class, id);
//重设这个对象的名字
person.setName("vivi_彭伟");
session.update(person);
session.getTransaction().commit();
logger.debug("============:) 更新对象---成功!:) ============");
}catch(HibernateException e){
e.printStackTrace();
logger.debug("============:( 更新对象---失败!:( ============");
}
}
public void delete(Integer id){
try{
//获取Hibernate的Session
Session session = Test.getSessionFactory().getCurrentSession();
session.beginTransaction();
//定义要装载对象的ID
Person person = (Person)session.load(Person.class, id);
//删除这个对象
session.delete(person);
session.getTransaction().commit();
logger.debug("============:) 删除对象---成功!:) ============");
}catch(HibernateException e){
e.printStackTrace();
logger.debug("============:( 删除对象---失败!:( ============");
}
}
}
1、Hibernate的配置文件放在,src的根目录下
2、*.hbm.xml与持久化对象放在一起
3、字符集问题:hibernate使用JDBC需要设置,与数据库同步
<property name="connection.useUnicode">true</property>
<property name="connection.characterEncoding">utf8</property>
mysql>Create DATABASE IF NOT EXISTS my_db default charset utf8 COLLATE utf8_general_ci;
分享到:
相关推荐
Hibernate3一个连接本机MySQL数据库的示例代码,使用了C3P0连接池
该示例演示使用iBATIS操纵Oracle、MySQL和MS SERVER三种数据库(实现查询与新增动作),只需要修改配置档与SQL影射档即可,而Java部分的代码不用修改。本人觉得,该框架一个非常简单、使用方便的持久层框架。其中:...
struts1.2.9,Hibernate3.3.1,struts-tags,JSTL标签库+EL,对数据库表(test.userinfo)增删改查的完整示例. 未用Eclipse或MyEclipse,几乎纯手工实现,含所需库文件. 欢迎大家下载部署,学习. 2009-12-15
maven+hibernate项目简单示例,用的eclipse新建的maven项目,修改pom.xml导入hibernate jar包,数据库用MySQL,表user自行新建即可
spring+hibernate annotation 完整示例,带数据库脚本 mysql,tomcat,myeclipse项目
HibernateReact React式API,支持非阻塞数据库驱动程序以及与数据库交互的React...目录中有一个非常简单的示例程序。 Gradle构建 该项目是建立与Gradle,但你并不需要在你的机器上安装Gradle。 建造 要编译该项目,请导
一个最简单的Hibernate project(不涉及Struts, Tomcat, XDoclet,JBoss等东东)必须的几个东东: 1. Hibernate工具包。 2. JDBC数据库连接驱动。以mysql为例,mysql-connector-java-3.1.×-bin.jar。 3. 配置...
Struts2 + Hibernate3 + Spring2+Annotation连接MySQL数据库含示例
struts2+hibernate示例,描述了框架的搭建方式,还有基础jar包的添加。连接数据库为Mysql,另外添加了jdbc的示例。
使用mysql数据库的struts2 spring hibernate整合简单示例,也可参考我的:“struts2 spring hibernate整合要点、注意点”这篇文档来配置
在安装完mysql之后,请使用客户端或者phpmyadmin建立一个名为forum的mysql数据库,其字符集必须为UTF-8(见下面关于中文的说明,在phpmyadmin中应该选择utf8_general_ci)。另外还需要建立名为forum的用户,密码也为...
SpringHibernateMaven 示例 使用架构 Spring MVC + Hibernate + MySql + Maven 的示例应用程序 src/main/resources/application.properties 中的数据库配置
该项目显示了存储在MySql数据库中的用户列表。 使用以下端点,可以实现不同的操作: /rest/users/all这将返回在MySql表中创建的Users表中的Users列表(用户) /rest/users/{name} -返回URL中传递的用户的详细信息 ...
SSH2集成示例,SSH2集成, struts2.1+spring2.5+hibernate3.0+mysql 包里自带数据库文件,导入后可用,一个ssh2的集成简单示例 有什么问题可问我
Struts2、Spring、Hibernate框架搭建示例 一个用户注册的小例子,主要是框架的使用 数据库使用Mysql 数据库名:test 表名:User 表内字段:id(PK),username,password
Spring3mvc和hibernate整合示例代码,后台数据库是mysql
数据库的连接符 jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=UTF-8 放在jdbc.properties 文件中 创建完成数据库test_db后,在eclipse中,执行 @Test public void testSaveMore() ...
这是基于Maven搭建的并结合SpringMVC和Hibernate框架实现的Web应用程序,具体功能是通过前端请求从而将数据持久化到MySQL数据库。
本示例源码提供Spring整合Jersey与前端HTML进行数据交互与传输的案例,解决页面空白不显示等问题,并提供Jersey Junit单元测试案例,是一个学习Spring整合Jersey的很好的Demo案例
这是一个基于springmvc框架,结合spring、hibernate实现的,使用mysql数据库,前端使用bootstap实现的示例,实现了增删改查等等功能,虽没什么特别复杂之处,但是一定对你的学习有所帮助,10分虽然有点多但是一定...