在Linux和许多其他系统中,在导航终端时,您可以按Tab以自动完成目录或文件名.
我想知道MySQL终端中是否有类似的东西.例如,如果我想获得someTableWithRidiculousLongName我可以输入的描述,describe someTableW那么Tab它将自动完成其余的.
MySQL终端中是否存在类似的内容?
我正在使用JSF,PrimeFaces,Glassfish和Netbeans构建我的第一个Java EE应用程序.因为我是新手,所以我可能会接近核心问题.
核心问题:我想安全地维护用户的信息.关于是否应该在JSF会话bean或有状态会话EJB中维护它似乎存在矛盾的想法.我正在尝试使用有状态会话EJB,因为它更安全.
问题是我的应用程序似乎正在创建该bean的多个实例,当我希望它创建一个并重新使用它时.如果我刷新页面它运行@PostConstruct和@PostActivate3次,他们都用不同的实例.然后,当我重新部署应用程序时,它们都会被破坏.
我误解了它应该如何工作或错误配置了什么?
我将尝试显示一个修剪过的代码示例:
basic.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
Hello from Facelets
<c:if test="#{loginController.authenticated}">
Authenticated
</c:if>
<c:if test="#{loginController.authenticated}">
Authenticated
</c:if>
<c:if test="#{loginController.authenticated}">
Authenticated
</c:if>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
LoginController:
@Named(value = "loginController")
@RequestScoped
public class LoginController implements Serializable {
@EJB
private UserBeanLocal userBean;
public boolean isAuthenticated() {
return userBean.isAuthenticated();
}
}
Run Code Online (Sandbox Code Playgroud)
UserBean(不包括UserBeanLocal界面)
@Stateful
public …Run Code Online (Sandbox Code Playgroud) 我正在使用Glassfish和JSF构建我的第一个Java EE Web应用程序.我对条件查询相当新,我有一个我需要执行的查询,但javaee6教程在示例上似乎有点薄.无论如何,我很难创建查询.
目标:我希望用最多的文档来存储公司.公司与文档具有OneToMany关系.Documents与多个表具有ManyToOne关系,"usertype"列区分它们.
MySQL查询:
SELECT USERID, COUNT(USERID) AS CNT
FROM DOCUMENTS
WHERE USERTYPE="COMPANY"
GROUP BY USERID
ORDER BY CNT DESC
Run Code Online (Sandbox Code Playgroud)
谢谢
--update--根据用户反馈,这是我到目前为止:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Documents> cqry = cb.createQuery(Documents.class);
//Intersting Stuff
Root<Documents> root = cqry.from(Documents.class);
Expression userid = root.get("userID");
Expression usertype = root.get("userType");
Expression count = cb.count(userid);
cqry.multiselect(userid, count);
Predicate userType = cb.equal(usertype, "COMPANY");
cqry.where(userType);
cqry.groupBy(userid);
cqry.orderBy(cb.desc(count));
//more boilerplate
Query qry = em.createQuery(cqry);
List<Documents> results = qry.getResultList();
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Exception Description: Partial object queries are not allowed to maintain …Run Code Online (Sandbox Code Playgroud) 这是一个概念性问题.它的灵感来自于使用一些非常大的表,即使是简单的查询也需要很长时间(正确索引).我想知道是否有一个更好的结构然后只是让桌子不断增长.
从大到大,我的意思是10,000,000条记录,每天增长10,000次/天.像这样的表每2.7年会有10,000,000条额外的记录.让我们说最近的记录访问量最多,但旧的记录需要保持可用.我有两个概念性的想法来加快它.
1)维护一个包含所有数据的主表,按日期按相反顺序编制索引.为每年创建一个单独的视图,该视图仅包含该年份的数据.然后在查询时,让我们说查询预计只会从三年跨度中提取几条记录,我可以使用联合来组合三个视图并从中进行选择.
2)另一种选择是为每年创建一个单独的表.然后,在查询时再次使用union来组合它们.
还有其他人有任何其他想法或概念吗?我知道这是Facebook面临的一个问题,那么您认为他们如何处理呢?我怀疑他们有一个包含100,000,000,000条记录的表(status_updates).
我正在使用glassfish和netbeans做我的第一个Java EE Web应用程序.当我创建一个需要嵌入式EJB容器的单元测试时,它可能需要大约30秒才能加载.我认为这完全可以理解,因为它"模仿"glassfish服务器.但后来我从Adam Bien那里看到了这篇文章:
整个测试,启动容器,我的机器约5秒钟.
http://www.adam-bien.com/roller/abien/entry/embedding_ejb_3_1_container
所以我必须假设某些东西配置不正确.我正在运行Linux Mint 12,我的项目是使用MySQL数据库而我的PC是2Ghz双核,4 GB内存.大多数都使用netbeans安装中的默认设置.(根据cpubenchmark.net,我订购了一个新的处理器,将CPU基准从1700移到7800)
我该怎么做才能提高启动嵌入式EJB容器的速度?
在查看输出时,主要罪魁祸首似乎是:
org.hibernate.validator.engine.resolver.DefaultTraversableResolver detectJPA
Run Code Online (Sandbox Code Playgroud)
这是完整的输出:
Jan 9, 2012 5:01:57 PM com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default.
Jan 9, 2012 5:01:59 PM org.glassfish.ha.store.spi.BackingStoreFactoryRegistry register INFO: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry
Jan 9, 2012 5:02:00 PM com.sun.enterprise.v3.server.AppServerStartup run INFO: GlassFish Server Open Source Edition 3.1.1 (12) startup time : Embedded (1,476ms), startup services(2,053ms), total(3,529ms)
Jan 9, 2012 …Run Code Online (Sandbox Code Playgroud) 我正在我的Java EE应用程序中设置单元测试.我正在使用JPA,JSF,Netbeans和Glassfish.它也是我的第一个真正的java应用程序,请原谅我,如果答案是明显的愚蠢!
该测试使用EJBContainer,访问实体并尝试输入空记录.然后它尝试输入一个用户名太短的记录.我想确认抛出了正确的异常.
我可以添加,@Test(expected=javax.ejb.EJBException.class) 但会捕获容器可能抛出的任何异常.如果它不是我想知道的预期异常.(与捕获一个多用途的例外哲学相同,最佳实践是捕获特定的例外)
以下测试有助于说明:
//@Test(expected=javax.validation.ConstraintViolationException.class)
@Test(expected=javax.ejb.EJBException.class)
public void testCreate() throws Exception {
EJBContainer container = getContainer();//pull singleton container
AgentsFacade instance = (AgentsFacade) container.getContext().lookup("java:global/classes/AgentsFacade");
Agents badAgent = new Agents();
instance.create(badAgent);//null username
//Short username
Agents shortUsername = new Agents("srtnm");
instance.create(shortUsername);//must be > 6 in length
}
Run Code Online (Sandbox Code Playgroud)
以下是Agents实体的"username"属性的注释:
...
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(unique=true)
@Size(min=6, max=40)
@NotNull
private String username;
...
Run Code Online (Sandbox Code Playgroud)
如您所见,两个测试都应抛出javax.validation.ConstraintViolationException或其他一些异常.我可以在EJBException中的调试信息中看到它们.我不确定是否有办法"提取"正确的例外情况?
最后,我是一个总菜鸟.因此,如果我在错误的道路上徒步旅行,请告诉我.
谢谢.
--Update--
回应斯蒂芬,这是我想出的结果.
try {
//Null username
Agents badAgent = new Agents();
instance.create(badAgent);
fail("NULL agent added!");//should …Run Code Online (Sandbox Code Playgroud) 我一直在准备 SCJP,现在是 Oracle 认证专业 Java SE 程序员考试。
我很难理解所有不同的集合以及何时使用它们。我也喜欢闪存卡。因此,我尝试创建一组本质上相同的类,除了它们使用的集合之外。我必须确定输出的结果以及每个集合的主要“特征”是什么。
不幸的是我不相信自己。我希望有人确认所有信息是否准确或是否有遗漏。经过一些反馈/更正后,我认为这对于其他试图理解 Java 集合的人来说将是一个很好的练习。
涵盖的集合有:HashMap、Hashtable、TreeMap、LinkedHashMap、HashSet、TreeSet、LinkedHashSet、ArrayList、Vector、LinkedList、PriorityQueue。
我也将所有文件分开,可以在这里下载: http: //www.allgo.com/personal/MyCollections.zip
提前致谢
导入 java.util.*;
导入java.lang.*;
类 MyItem 实现 Comparable{
私有字符串名称;
MyItem(String n){ 名称 = n; }
public String toString(){返回名称;}
public String getName(){返回名称;}
公共布尔等于(对象obj){
if(this==obj) 返回 true;
否则 if(obj==null) 返回 false;
否则 if(getName() != ((MyItem)obj).getName()) 返回 false;
否则返回真;
}
公共 int hashCode(){ 返回 5; }
公共 int compareTo(MyItem b){return b.getName().compareTo(getName());}
}
公共类我的集合{
公共静态无效主(字符串[] args){
MyHashMap.main(args); System.out.println("HashMap: Hash=Unsorted, Unordered.Map=键/值对\n##\n");
MyHashtable.main(args); System.out.println("哈希表:线程安全。Hash=未排序,无序。Map=键/值对\n##\n");
MyTreeMap.main(args); System.out.println("TreeMap: Tree=已排序。Map=键/值。\n##\n");
MyLinkedHashMap.main(args); System.out.println("LinkedHashMap: Linked=保持插入顺序。Hash=未排序,无序。Map=键/值对。\n##\n");
MyHashSet.main(args); …