首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一个Entity Bean要剥离出来至少三个以上的POJO

现在我们使用基于POJO模型的实现,那么粗颗粒度的EJB还要继续细分:一个Entity Bean要剥离出来至少三个以上的POJO,即一个或者多个实体类,一个或者多个DAO接口类,一个或者多个DAO接口实现类...但是我们应该看到,Martin批评的贫血的领域模型并不是Hibernate实体类,Martin指的贫血的领域模型实际上是缺乏丰富业务逻辑概念的领域抽象模型,这和Hibernate实体类完全是风牛马不相及的东西...而Hibernate实体类只是具体编码过程中,为了实现一个领域模型而编写的一组基于POJO的对象中的,完成领域模型某个特征的类。...POJO指的就是非EJB那种重量级,高侵入性的组件模型,关于POJO的定义,你同样可以在Martin Fowler的bliki上面找到。 Spring的Bean是不是POJO? 是的!...没有看过Martin的DDD,按照自己的理解, POJO domain models指的就是轻量级的领域模型。何为轻量级?

40620

JPAHibernate问题汇总

项目使用的是SpringBoot框架,JPA默认使用的是hibernate的实现,而hibernate的懒加载机制其实就是延迟加载对象,如果没有在session关闭前使用到对象里除id以外的属性,就只会返回一个没有初始化过的包含了...懒加载导致的N + 1问题 Hibernate的懒加载有个让人诟病的问题,就是所谓的N + 1问题:如果一个实体里存在一个懒加载的集合对象,在查询该实体,会发出一条SQL。...: cannot simultaneously fetch multiple bags,该异常由Hibernate引发,一个实体中定义了两个及两个以上的非懒加载的集合时,即fetch = FetchType.EAGER...于是一个事务方法A去调用了另一个事务方法B,不指明事务传播级别,那么事务方法B依然使用方法A的事务。...方法A继续执行完毕,在最后提交事务,会发现当前事务已经被标记为rollback-only状态,于是整个事务回滚并抛出UnexpectedRollbackException异常。

2.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

加速你的Hibernate引擎(上) 转

只读POJO标识为不可更改的(immutable)也是一个调优点。如果一个服务层方法只处理只读数据,可以将它的事务为只读,这是优化Hibernate和底层JDBC驱动的一个方法。...一种是在开始加3.2载所有需要的独立POJO,随后抽取需要的属性放入组合POJO;另一种是使用HQL投影,直接从数据库中选择需要的属性。...通常会为Hibernate提供一个有连接池功能的数据源。Apache DBCP的BasicDataSource[13]是一个流行的开源生产级数据源。...这是一种反模式,不该使用它。 **使用分离对象,每次请求一个会话。**每次Ke户端请求有一个新会话和一个事务,使用Hibernate的“当前会话”特性两者关联起来。...如果不涉及数据变更,事务标记为只读的,就像4.3.1节提到的那样。 总是设置默认事务超时。保证在没有响应返回给用户,没有行为不当的事务会完全占有资源。这对本地事务也同样有效。

59830

旧调重弹Hibernate与Ibatis区别——深入架构设计

例如,你可以选择对某些数据进行懒加载,也可以一个复杂的对象图只用一条联合查询SQL语句就同时加载完毕,从而避免严重的性能问题。 对于我个人来说,首选ibatis。...规范) 生成对应实体类的映射文件并添加到1中的配置文档 这里科普下IBatis的详细配置及使用情况!...idle)连接数; Pool.MaximumCheckoutTime数据库连接池中,连接被某个任务所允许占用的最大时间,如果超过这个时间限定,连接将被强制收回,(毫秒); Pool.TimeToWait:线程试图从连接池中获取连接...,连接池中无可用连接可供使用,此时线程进入等待状态,直到池中出现空闲连接。...而连接池管理器通过语句检测池中连接是否可用, 检测语句应该是一个最简化的无逻辑SQL。

57640

POJO应用框架:Spring与EJB3.0的比较

例如,JBoss的内嵌EjB3.0是开源产品且可以在任何J2SE5.0兼容的环境运行(例如, 在任何Java服务器上),产品正处于软件测试阶段。...你甚至可以使用一个简单的 @PersistenceContext 注释(稍候例子演示)EntityManager和它后台的Hibernate事务绑定到一个stateful session bean的应用事务中...意识到只有XML配置文件的局限,Spring使用Apache Commons 元数据在Java源码中来说明事务属性。最新版本的Spring1.2也支持JDK-1.5风格注解。...使用DI,框架就像一个对象工厂,它创建服务对象然后按照运行时配置这些服务对象注入到应用的POJO里。站在应用开发者的角度,客户端POJO在被使用时可自动获得正确的服务对象。...你可以任何POJO注入到另一个POJO,包括你自己在应用定义的那些POJO

1.8K80

Hibernate二级缓存配置

大家好,又见面了,是你们的朋友全栈君。 Hibernate的cache管理:   Cache就是缓存,它往往是提高系统性能的最重要手段,对数据起到一个蓄水池和缓冲的作用。...在Hibernate使用EhCache: 1)hibernate.cfg.xml 中增加对二级缓存的配置(maven项目放在resources文件夹下) <?...它保证可重读的事务隔离级别,可以对读/写比例高,很少更新的数据采用该策略。   2:读写(read-write)使用时间戳机制维护读写提交事务隔离级别。...使用策略,应该设置足够的缓存过期时间,否则可能从缓存中读出脏数据。一些数据极少改变,并且这些数据和数据库有一部份不量影响不大可以使用策略。   ...4:只读(read-only)确保数据永不改变可以使用策略。 <!

31120

java分层架构概念

modle层就是对应的数据库表的实体类。 Dao层是使用Hibernate连接数据库、操作数据库(增删改查)。...那个对象不存在,还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,换内存,没必要连主板一起换。不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。...对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务逻辑与数据库资源中间。...DAO:data access object数据访问对象,对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作....里的 实体bean就是个PO,也叫POJO; hibernate里的Criteria 就相当于一个QO; 在使用hibernate的时候我们会定义一些查询的方法,这些方法写在接口里,可以有不同的实现类.

1.6K41

Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程二十二

9.3.存储库映射 除了使用@Region实体类上的@Region注解指定存储实体的 Region 之外,您还可以实体的Repository接口上指定注解。...,您可以实体存储在多个 Apache Geode 区域中,如以下示例所示: @Service class CustomerService { CustomerRepository customerRepo...这在您可能要返回某个实体类型的视图或投影并且只想设置可写状态的情况下很有用。也许实体的视图或投影基于授权或其他一些标准。关键是,您可以根据应用程序的用例和要求来利用功能。...9.4.4.映射瞬态属性 同样,您的实体定义transient属性时会发生什么? transient在序列化实体,您希望实体的字段或属性不会被序列化为 PDX。...包含类型过滤器存在,MappingPdxSerializer类类型未被隐式排除或类类型被显式包含,以返回 true 的方式决定是否反/序列化类类型的实例。

90520

HibernateHibernate框架配置详解

通过Hibernate我们可以方便地操作数据库读取出来的信息,减少了繁琐的JDBC操作。...一般情况下,有两种方式可以进行Hibernate的配置,一种是通过配置文件进行配置,另一种是通过注解进行配置。 通过注解简单介绍Hibernate框架的配置。...Hibernate框架的配置一般可以分为以下几个步骤: 1.添加基本的Hibernate Jar包 2.添加注解的Jar包 3.编写Hibernate.cfg.xml文件 4.编写POJO文件,并编写注释...POJO类作为一个实体解析 21 * @Table表示数据库中的表格, name对应数据库的表明, catalog对应数据库名(可省略) 22 */ 23 @Entity 24 @...Annotation的知识,你可以阅读的另一篇博文:Hibernate Annotation注解详解 五、编写测试文件 编写测试文件,自动生成数据库表: 1 package com.basehibernate.test

1.4K30

Spring与SpringBoot整合Spring Data JPA及使用

的学习路程是先通过spring整合Spring data JPA来具体学习,逐渐深入,学习完这些重要知识点后,再浅出到使用SpringBoot来整合Spring data JPA。...//使用@Query注解 // 可以用?index,index从1开始来传参。如:from Users where userName=?...案例具体的步骤如下: 分别创建两个实体类Users实体类和Roles实体类: Users package com.haiexijun.pojo; import javax.persistence.*;...我们需要用到之前的Roles的实体以及新创建一个Menus实体 Roles package com.haiexijun.pojo; import javax.persistence.*; import...validate: 会验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值,运行程序会校验实体字段与数据库已有的表的字段类型是否相同,不同会报错 然后创建一个pojo包,里面创建一个实体

4.3K30

POJO简介

POJO可以当作DTO使用。...该名称的创立者之一Matin Flower是这样解释的: "对于人们经常忘记常规的Java对象,的总结是它们没有一个好名字 – 因此在准备一次演讲,Rebecca Parsons, Josh Mackenzie...PO是位于EIMS层数据库中的实体,生命周期和数据库密切相关.在向数据库插入记录创建该实体,删除或关闭数据库实体随之消亡.很多优秀的开源框架都实现了数据库中的PO通过ORM用POJO来实际操作,...pojo实体bean: pojo 应用于页面数据的操作,是来保存数据的。(你也可以不这样做,但是这已经成了一种规范。) 实体bean与数据库表关联,是对数据表的操作。...简而言之,一个Pojo可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性,他就是一个JavaBean。

1.5K30

2015年系统架构师软考案例分析考点

3.2 活动图可以用于描述系统的工作流程和并发行为。活动图其实可看作状态图的特殊形式,活动图中一个活动结束后立即进入下一个活动(在状态图中状态的转移可能需要事件的触发)。...、列; 4.2 需要进行多表连接查询,尽量使用连接查询, 4.3 避免使用子查询结构; 4.4 尽量避免采用 NOT IN、NOT EXIST、LIKE 等使用全表查询的操作; 4.5 尽量避免使用...CMP 是由 EJB 容器自动完成对数据库的操作,你所有做的,就是在实体 bean 重写入 SetXXX 或 getXXX 方法,然后在 ejb-jar.xml 中定义 cmp-field 就可以。...iBATIS 的着力点,则在于 POJO 与 SQL 之间的映射关系。然后通过映射配置文件, SQL 所需的参数,以及返回的结果字段映射到指定 POJO。...15.抓取策略 Hibernate实体关联对象的抓取有着良好的机制。对于每一个关联关系都可以详细地 设置是否延迟加载,并且提供关联抓取、查询抓取、子查询抓取、批量抓取四种模式。

70910

程序员的30大Mybatis面试问题及答案

18.实体属性名和表中字段不一致,怎么办? 19.嵌套查询用什么标签? 20.like模糊查询怎么写? 21.Mybatis支持枚举?...MyBatis 可以使用 XML 或注解进 行配置和映射, MyBatis 通过参数映射到配置的 SQL 形成最终执行的 SQL 语句 ,最后执行 SQL 的结果映射成 Java对象返回。...2.Hibernate优点? Hibernate建立在POJO和数据库表模型的直接映射关系上。通过xml或注解即可和数据库表做映射。通过pojo直接可以操作数据库的数据。它提供的是全表的映射模型。...11.Mybatis支持注解?优点?缺点? 支持。 优点:对于需求简单sql逻辑简单的系统,效率较高。 缺点: sql变化需要重新编译代码,sql复杂,写起来更不方便,不好维护。...mapUnderscoreToCamelCase=true 18.实体属性名和表中字段不一致,怎么办?

23720

Java分层概念(转)

modle层就是对应的数据库表的实体类。 Dao层是使用Hibernate连接数据库、操作数据库(增删改查)。...那个对象不存在,还要修改业务的代码,这不符合逻辑。好比主板上内存坏了,换内存,没必要连主板一起换。不用知道内存是哪家生产,不用知道多大容量,只要是内存都可以插上这个接口使用。...PO是持久化对象,它只是物理数据实体的一种对象表示,为什么需要它?因为它可以简化我们对于物理实体的了解和耦合,简单地讲,可以简化对象的数据转换为物理数据的编程。VO是什么?...不过,另外一点,如果我们没有使用数据持久层,或者说没有使用hibernate,那么PO和VO也可以是同一个东西,虽然这并不好。...ActionForm 就是个VO; hibernate里的 实体bean就是个PO,也叫POJO; hibernate里的Criteria 就相当于一个QO; 在使用hibernate的时候我们会定义一些查询的方法

3.3K40

详解Java业务领域分层模型中的vopodtopojobo

使用它,可以使我们的程序与物理数据解耦,并简化对象数据与物理数据之间的转换。 PO的属性跟数据库表字段一一对应。 Hibernate里的实体bean就是个PO,也叫POJO。...PO是持久化对象,它只是物理数据实体的一种对象表示。 为什么需要它?因为它可以简化我们对于物理实体的了解和耦合,简单地讲,可以简化对象的数据转换为物理数据的编程。 VO是什么?...首先说PO和VO吧,它们的关系应该是相互独立的,一个VO可以只是PO的部分,也可以是多个PO构成,同样也可以等同于一个PO(当然是指他们的属性)。...不过,另外一点,如果我们没有使用数据持久层,或者说没有使用hibernate,那么PO和VO也可以是同一个东西,虽然这并不好。...这样处理业务逻辑,就可以针对BO处理。 POJO(plain ordinary java object) 简单无规则java对象 纯的传统意义的java对象。

1.6K10

hibernate 5.2.6新特性

往往一个项目只需要一个SessionFactory,需要操作多个数据库可以为每个数据库指定一个SessionFactory。...Transaction Transanction接口是Hibernate的数据库事务接口,用于管理事务,他对底层的事务作出了封装,用户可以使用Transanction对象定义自己的对数据库的原子操作,底层事务包括...领域模型的关联 关联有一对一、一对多、多对多关联,在面向对象的Java中,这三种关联都可以很好地表示,一对一关联就是单一类的实体,而一对多多对多关联,包含了多的一方要使用集合,一般情况下,都会选择使用Set...但它又不限于EJB 3.0,你可以在Web应用、甚至桌面应用中使用。...总的来说,JPA包括以下3方面的技术: ORM映射元数据 JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此实体对象持久化到数据库表中; API 用来操作实体对象

1.3K90

为什么使用mybatis

Apache 的DbUtils Apache在2003年的时候发布了一个叫Commons DbUtils的工具类,可以简化对数据库的操作。 官网链接....比如转换成POJO或者List或者Map?肯定不能一个个属性去set或者put 了。 希望做到的是,只要指定一个类型,它就可以自动把结果集给我转换成这种类型。这个怎么实现呢?...在使用Hibernate的时候,我们需要为实体类建立一些hbm的xml映射文件。 然后通过Hibernate提供(session)的增删改查的方法来操作对象。...Hibernate的框架会自动帮我们生成SQL语句(可以屏蔽数据库的差异),自动进行映射。这样我们的代码变得简洁了,程序的可读性也提高了。 当然映射配置文件也可以使用注解代替。...在一些业务比较简单的项目中,我们可以使用Hibernate; 如果需要更加灵活的SQL,可以使用MyBatis,对于底层的编码,或者性能要求非常高的场合,可以用JDBC; 实际上在我们的项目中,MyBatis

43530

工具人不好当,至少也要会如何配置MyBatis!

Hibernate 是建立在若干 POJO 通过 XML 映射文件(或注解)提供的规则映射到数据库表上的。我们可以通过 POJO 直接操作数据库的数据,它提供的是一种全表映射的模型。...通过Hibernate的配置文件,我们已经不需要编写 SQL 语言,只需要使用 HQL (Hibernate Query Langurage)语言就可以了。 ? 「hbm.xml」: ?...所以,总结 Hibernate 的缺点有如下几个: 全表映射带来的不便 无法根据不同的条件组装不同的 SQL 对多表关联和复杂 SQL 查询支持较差,需要自己写 SQL,返回后,需要自己数据组装成...POJO 不能有效支持存储过程 虽然也支持 HQL,但是性能较差,无法做到优化 SQL 做个开发搬运工容易么,好不容易发现个 Hibernate 可以替代 JDBC,没想到缺点也这么多!...,「不用配置中定义」 ObjectFactory 标签 MyBatis 构建一个结果集返回的时候,都会用 ObjectFactory(对象工厂)来构建 POJO

95820
领券