相关疑难解决方法(0)

用于java对象到对象映射的任何工具?

我正在尝试使用java将DO转换为DTO并在开始编写自己的工具之前寻找自动化工具.我只是想知道是否有相同的免费工具.

java mapping dto

224
推荐指数
6
解决办法
15万
查看次数

JSF控制器,服务和DAO

我正在尝试习惯JSF如何处理数据(来自弹簧背景)

我正在创建一个维护用户列表的简单示例,我有类似的东西

<h:dataTable value="#{userListController.userList}" var="u">
    <h:column>#{u.userId}</h:column>
    <h:column>#{u.userName}</h:column>
</h:dataTable>
Run Code Online (Sandbox Code Playgroud)

然后"控制器"有类似的东西

@Named(value = "userListController")
@SessionScoped
public class UserListController {
    @EJB
    private UserListService userListService;

    private List<User> userList;

    public List<User> getUserList() {
        userList = userListService.getUsers();
        return userList;
    }
}
Run Code Online (Sandbox Code Playgroud)

而"服务"(虽然看起来更像是DAO)有

public class UserListService {

    @PersistenceContext
    private EntityManager em;

    public List<User> getUsers() {
        Query query = em.createQuery("SELECT u from User as u");
        return query.getResultList();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是正确的做事方式吗?我的术语是对的吗?"服务"感觉更像是DAO?控制器感觉它正在做一些服务工作.

jsf dao ejb jpa java-ee

32
推荐指数
2
解决办法
3万
查看次数

JSF服务层

我不确定我在JSF中使用MVC环境的方法是否是最好的方法.由于我想要充分利用JSF,我想知道我的服务层(或模型,用MVC术语说)应该如何"设计".

我知道视图 - 控制器比率应该是1比1(排除例外情况).现在我应该以什么方式设计我的服务层?我应该使用一项大型服务(不这么认为)吗?如果没有,根据我应该分割我的服务?

注意,我的服务将从Beans(控制器以MVC术语)调用,服务本身将在必要时使用JPA调用DAO.

提前致谢

java model-view-controller jsf service-layer

20
推荐指数
1
解决办法
1万
查看次数

在JSF中使用JPA实体.哪个是防止LazyInitializationException的最佳策略?

希望听听有关从JSF UI编辑JPA实体的最佳实践的专家.

所以,关于这个问题的几句话.

想象一下,我有持久化对象MyEntity,我将其取出进行编辑.在DAO层我使用

return em.find(MyEntity.class, id);
Run Code Online (Sandbox Code Playgroud)

MyEntity在"父"实体上返回带有代理的实例 - 想象其中一个是MyParent.MyParent被提取为代理问候语@Access(AccessType.PROPERTY):

@Entity
public class MyParent {

    @Id
    @Access(AccessType.PROPERTY)    
    private Long id;
    //...
}
Run Code Online (Sandbox Code Playgroud)

和MyEntity有它的参考:

@ManyToOne(fetch = FetchType.LAZY)
@LazyToOne(LazyToOneOption.PROXY)
private MyParent myParent;
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.在UI中,我只是直接使用获取的对象而不创建任何值对象,并使用选择列表中的父对象:

<h:selectOneMenu value="#{myEntity.myParent.id}" id="office">
    <f:selectItems value="#{parents}"/>
</h:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

一切都好,没有LazyInitializationException发生.但是当我保存对象时,我收到了

LazyInitializationException: could not initialize proxy - no Session
Run Code Online (Sandbox Code Playgroud)

MyParent代理setId()方法.

如果我改变MyParent关系,我可以轻松解决问题EAGER

@ManyToOne(fetch = FetchType.EAGER)
private MyParent myParent;
Run Code Online (Sandbox Code Playgroud)

或使用获取对象left join fetch p.myParent(实际上我现在这样做).在这种情况下,保存操作正常,并且关系MyParent透明地更改为新对象.不需要执行其他操作(手动复制,手动参考设置).非常简单方便. …

jsf hibernate jpa lazy-initialization

10
推荐指数
2
解决办法
4928
查看次数

DAO和JDBC的关系?

我知道Hibernate实现了ORM(对象关系映射),JDBC实现了什么类型的映射?它实现了DAO吗?我不完全理解DAO如何与JDBC相关......?

database dao hibernate terminology jdbc

9
推荐指数
2
解决办法
5059
查看次数

当您拥有与 POJO(实体)相同的对象时,拥有 DTO 对象有什么意义?

我想了解当您已经拥有 POJO 对象(作为实体)时创建 DTO 对象有什么好处。

在我的项目中我有:

  • DTO 类用于 Web 服务和应用程序之间的通信
  • POJO实体类(JPA)用于数据库和应用程序之间的通信

如果我查看 DTO 对象类(让我们称之为 MyObjDTO)和相同的类,但 POJO 方面(让我们称之为 MyObjPOJO),除了 MyObjPOJO 作为注释之外没有任何区别,因为它是一个 @Entity。

所以事实上,我在我的项目中得到了 2 个类,它们看起来相同(相同的属性,相同的方法),但用于不同的 puprose。

IMO,在这种情况下,DTO 类是无用的,并且会增加应用程序的复杂性,因为我对 DTO 类所做的所有操作都可以用 POJO 类来完成,而且,对于单一类型的对象,我必须维护至少 2 个类(DTO 和POJO),例如,如果我添加一个属性,我必须在两个类中添加该属性。

我不是专家,我对自己的想法提出疑问;你怎么看待这件事 ?

java pojo dto

3
推荐指数
1
解决办法
6446
查看次数