我正在阅读Hibernate关于实体关联的文档,我遇到了一些困难来弄清楚一些事情.它本质上必须ManyToOne与OneToMany关联之间的区别.虽然我在实际项目中使用它们,但我无法完全理解它们之间的差异.据我了解,如果一个表/一个实体ManyToOne与另一个表有关联,那么该关联应该来自另一方OneToMany.那么,我们应该如何根据具体情况决定选择哪一个,以及它如何影响数据库/查询/结果?到处都有一个很好的例子吗?
PS:我认为由于它与问题的相关性会有所帮助,如果有人可以解释关联所有者的意义以及双向和单向关联之间的区别.
如何通过注释在spring mvc 3中设置header no cache?不是
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
Run Code Online (Sandbox Code Playgroud) 我应该如何测试获取EntityManager实例的EJB 3.1?
一个可能的EJB:
@Stateless
@LocalBean
public class CommentService {
@PersistenceContext
private EntityManager em;
public List<Comment> findAll() {
TypedQuery<Comment> query = em.createNamedQuery(
Comment.FIND_ALL, Comment.class
);
return query.getResultList();
}
}
Run Code Online (Sandbox Code Playgroud)
可能的测试:
@Test
public void testFindAll() {
List<Comment> all = service.findAll();
Assert.assertEquals(8, all.size());
}
Run Code Online (Sandbox Code Playgroud)
我只使用GlassFish 3.1和Eclipse Indigo for Java EE Developers.我已经尝试过这样的事情:
@Before
public void setUp() throws Exception {
ejbContainer = EJBContainer.createEJBContainer();
service = (CommentService) ejbContainer.getContext()
.lookup("java:global/classes/CommentService");
}
Run Code Online (Sandbox Code Playgroud)
但我得到的只是:
javax.ejb.EJBException:
No EJBContainer provider available: no provider names had been found.
Run Code Online (Sandbox Code Playgroud) 混淆使用JSF2 + Spring + EJB3或它们的任意组合让我感到有些困惑.我知道Spring的一个主要特性是依赖注入,但是我可以使用JSF托管bean @ManagedBean和@ManagedPropertyanotations,并获得依赖注入功能.使用EJB3,我更加困惑何时将其与JSF一起使用,或者甚至有理由使用它.
那么,在什么样的情况下使用Spring + JSF2或EJB3 + JSF2是个好主意?
到目前为止,我只使用JSF2创建了一些小型Web应用程序,从不需要使用Spring或EJB3.但是,我在许多地方看到人们正在将所有这些东西放在一起.
我需要针对我的模式验证Class对象,在该模式中我提供了正则表达式来验证自动生成的JAXB类的字段.当我尝试验证我的类对象时,我得到以下错误:
无法编组类型"xyz"作为元素,因为它缺少@XmlRootElement注释
这是我用来验证自动生成的类对象的代码:
jc = JAXBContext.newInstance(obj.getClass());
source = new JAXBSource(jc, obj);
Schema schema = schemaInjector.getSchema();
Validator validator = schema.newValidator();
validator.validate(source);
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以解决这个问题吗?
我想知道为什么我们需要为EJB 3.0会话bean单独的远程和本地接口.我猜大多数时候他们都会定义相同的合同.为什么我不能有一个通用接口,在我的Bean中我应该只能说我希望远程和/或本地访问这个bean.
谢谢Vikas
在用Java设计分布式应用程序时,似乎有一些技术可以解决同一类问题.我简要介绍了Java远程方法调用和Java消息服务,但很难真正看到它们的区别.Java RMI似乎比JMS更紧密耦合,因为JMS使用异步通信,但除此之外我没有看到任何重大差异.
我还认为Web Services和CORBA解决了同样的问题.
Java EE应用程序服务器提供了tomcat的所有功能,那么为什么要使用tomcat(例如代替glassfish,因为它是官方的)?
特别是当需要Java EE功能(如JPA,JAX-RS,JSF)时,因此需要将更多库与应用程序打包在一起,而符合EE标准的应用程序服务器是否可以提供开箱即用的功能?
我大致知道这个构造的作用:它创建一个SomeType EJB并将该对象注入另一个EJB.
@EJB(name="name1")
SomeType someVariable
Run Code Online (Sandbox Code Playgroud)
现在我有一个类似于这样开始的类:(我给出所有类级别的注释,即使我认为只有@EJBs相关的)
@Remote(SomeClass.class)
@Stateless(name="someName")
@EJBs({@EJB(name="name1",beanInterface=Type1.class),
@EJB(name="name2",beanInterface=Type2.class)})
@TransactionAttribute(TransactionAttributeType.REQUIRED)
@TransactionManagement(TransactionManagementType.CONTAINER)
public class X extends Y{
//code
Run Code Online (Sandbox Code Playgroud)
这是做什么的@EJB?他们可能从JNDI获取或创建"name1"......对象,但他们在哪里放置结果?我没有看到.lookup任何附近的电话,但代码库是巨大的,所以我不太确定这一点.
奖金问题:我认为这两个@Transaction注释只是重复默认值?
更新:此时多个人声称@EJBs是专有扩展.它不是.它是java EE5的核心部分.有关详细信息,请参阅JavaDoc..它只是个别@EJB注释的容器.
我相信声称这些EJB注释的每个人都会进行查找.我只是想知道这次查找结果会发生什么.
这是我的主控制器:
package org.demian.demibox.controllers;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class MainController {
private String getUsername() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth.isAuthenticated())
return auth.getName();
else
return null;
}
@RequestMapping(value = "/", method = RequestMethod.GET)
public String showHome() {
String username = getUsername();
System.out.println(username);
if (username == null || username.length() == 0)
return "welcome";
return "index";
}
}
Run Code Online (Sandbox Code Playgroud)
即使我没有登录,也auth.isAuthenticated()总是返回true.这是为什么?何时会auth.isAuthenticated()返回虚假?经过身份验证的用户的名称是,anonymousUser如果我没有登录,并且如果我已登录,则使用用户名.
这是我的security-context.xml档案:
<?xml version="1.0" encoding="UTF-8"?>
<beans …Run Code Online (Sandbox Code Playgroud)