ibernate持久层解决方案---之使用前题

本文介绍了Hibernate框架的优点及其适用场景,探讨了对象关系映射(ORM)的好处,并提供了搭建项目的步骤及单元测试的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

HIBERNATE优点:
1.更加面向对象化(直接操作对象来存储数据)
2.可移植性增强了(相对于不同的数据库)
3.透明持久化(pojo:最纯粹的java对象)--没有侵入性 (轻量级框架)
4.提高生产力(不用写SQL语句)
HIBERNATE使用
适合:
1.针对单个对象的增删改(非批量);
2.对象之间有很清晰的关系。
不适合:
1.具体性操作,批量的对对象修改。
2.对象之间关系错综复杂。
3.使用数据库的特定功能的时候。

ORM(M==Map)包括对象间的映射关系和缓存机制等
好处:无侵入性  易于测试

新建项目:
1.导包 (HIBERNATE包和JDBC驱动包)
2.配置文件(hibernate.cfg.xml),为了便于调试 最好加入log4j配置文件
3.创建实体类
4.定义实体类的映射文件(User.hbm.xml,一般和实体类放在一起)
5.将User.hbm.xml文件加入到hibernate.cfg.xml文件中。
6.hbm2ddl工具类将实体类生成表
 Configuration cfg = new Configuration().configure();
--注意:不加.configure();默认读取hibernate.propertis文件
 SchemaExport export = new SchemaExport(cfg);
 export.create(true,true);
7.生成客户端。



junit单元测试
1.导包.
2.测试类继承TestCase类(注意命名)
3.测试类里的方法以test开头,public权限,void返回值
4.运行 test Junit 

 

package com.kucun.data.entity.DTO; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.BeanSerializer; import com.fasterxml.jackson.databind.util.NameTransformer; import java.io.IOException; public class FullEntitySerializer extends JsonSerializer<Object> { private final JsonSerializer<Object> defaultSerializer; public FullEntitySerializer(JsonSerializer<Object> defaultSerializer) { this.defaultSerializer = defaultSerializer; } @Override public void serialize(Object value, JsonGenerator gen, SerializerProvider provider) throws IOException { // 默认完整序列化 defaultSerializer.serialize(value, gen, provider); } // 用于处理嵌套序列化 @Override public JsonSerializer<Object> unwrappingSerializer(NameTransformer unwrapper) { return new FullEntitySerializer(defaultSerializer.unwrappingSerializer(unwrapper)); } }ibernate: select user0_.id as id1_9_, user0_.andy as andy2_9_, user0_.name as name3_9_, user0_.pass as pass4_9_, user0_.role as role5_9_ from user user0_ com.fasterxml.jackson.databind.JsonMappingException: Class com.kucun.data.entity.DTO.FullEntitySerializer has no default (no arg) constructor (through reference chain: java.util.HashMap["bancais"]->java.util.ArrayList[0]->com.kucun.data.entity.Bancai$HibernateProxy$q0bc7nh6["kucun"]) at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:295) at com.fasterxml.jackson.databind.SerializerProvider.reportMappingProblem(SerializerProvider.java:1309) at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1427) at com.fasterxml.jackson.databind.SerializerProvider.findPrimaryPropertySerializer(SerializerProvider.java:682) at com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap.findAndAddPrimarySerializer(PropertySerializerMap.java:64) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter._findAndAddDynamic(BeanPropertyWriter.java:898) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:706) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:755) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeFields(MapSerializer.java:726) at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeWithoutTypeInfo(MapSerializer.java:681)
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值