小编Jer*_*emy的帖子

maven-archetype-webapp eclipse问题

我正在尝试用maven和eclipse创建一个非常简单的webapp,但我根本没有快乐,实际上是快乐的逆转.

我转到File - > New Project,选择Maven Project,然后选择maven-archetype-webapp.当我完成向导时,会生成一个webapp结构,但在main下没有'java'目录,只有资源和webapp.

所以我右键单击main并选择新的Class.该类是在资源(?!)下创建的,而且,java似乎没有对它进行编译.我可以制作愚蠢的错误,并且不会出现语法突出显示.这就像java没有认识到它.

或者我尝试在main应该创建一个新的'java'目录,但仍然具有相同的不存在的java症状.

是什么赋予了?这让我很疯狂..

谢谢大家!

java eclipse maven-2 m2eclipse maven-archetype

73
推荐指数
3
解决办法
5万
查看次数

从maven的开发到生产

我对在开发和生产环境中使用maven感到困惑 - 我确信这很简单,我很遗憾.感谢任何帮助..

我在本地机器上的eclipse中设置了maven并编写了一些软件.我真的很喜欢它包括依赖罐子这样的东西很容易.

这就是我的开发环境.但现在我想在远程服务器上将项目发布到生产中.我搜索了文档,但我无法弄清楚它应该如何工作或maven最佳实践是什么..你应该:

a)还要在生产环境中运行maven,并将所有文件上传到生产环境并在那里重建项目?(我在生产服务器上重建"已发布"代码的想法让我感到不满,所以我很确定这是不对的..)

b)使用mvn:package创建你的jar文件,然后将其复制到生产中?(但那么所有那些好的依赖项是什么?是不是存在一个危险,你的测试代码现在将在生产环境中针对不同版本的从属jar运行,可能会破坏你的代码?或者缺少一个jar ...? )

c)其他我不知道的东西..

在此先感谢您的帮助!

java maven-2

13
推荐指数
1
解决办法
7114
查看次数

Hibernate noob获取连接问题

我有两个类,Test2和Test3.Test2有一个属性test3,它是Test3的一个实例.换句话说,我有一个单向的OneToOne关联,test2引用了test3.

当我从db中选择Test2时,我可以看到正在进行单独的选择以获取相关test3类的详细信息.这是着名的1 + N选择问题.

要修复此问题以使用单个选择,我尝试使用fetch = join注释,我理解为@Fetch(FetchMode.JOIN)

但是,如果将fetch设置为join,我仍会看到单独的选择.以下是我的设置的相关部分..

hibernate.cfg.xml中:

<property name="max_fetch_depth">2</property>
Run Code Online (Sandbox Code Playgroud)

测试2:

public class Test2 {
 @OneToOne (cascade=CascadeType.ALL , fetch=FetchType.EAGER)
 @JoinColumn (name="test3_id")
 @Fetch(FetchMode.JOIN)
 public Test3 getTest3() {
  return test3;
}
Run Code Online (Sandbox Code Playgroud)

NB我将FetchType设置为EAGER绝望,即使它无论如何都默认为EAGER OneToOne映射,但它没有任何区别.

谢谢你的帮助!

编辑:我几乎放弃了尝试使用FetchMode.JOIN - 任何人都可以确认他们已经让它工作,即产生左外连接?在文档中,我看到"通常,映射文档不用于自定义提取.相反,我们保留默认行为,并使用HQL中的左连接提取覆盖特定事务"

如果我做一个左连接取代:

query = session.createQuery("来自Test2 t2 left join fetch t2.test3");

然后我确实得到了我想要的结果 - 即查询中的左外连接.

Edit number 2:

Guys, thank you so much for your responses. Now I want to get to the bottom of this. I usually find that when I investigate something, I end up …

java hibernate

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

休眠 p6spy 问题

我试图了解 hibernate 在幕后所做的事情,并且我使用 p6spy 作为 mysql jdbc 驱动程序的代理,这样我就可以看到数据库真正发生了什么。然而,我对 p6spy 的输出有点困惑 - 感谢任何光线!

问题是这样的。我正在创建 Test1 类的两个新对象,即 test1a 和 test1b。我的日志中的输出如下:

Hibernate: 
    /* insert com.play.hibernate1.Test1
        */ insert 
        into
            Test1
            (name, value, id) 
        values
            (?, ?, ?)
1274973057265|1|1|batch|/* insert com.play.hibernate1.Test1 */ insert into Test1 (name, value, id) values (?, ?, ?)|/* insert com.play.hibernate1.Test1 */ insert into Test1 (name, value, id) values ('Test 1', 10, 5)
Hibernate: 
    /* insert com.play.hibernate1.Test1
        */ insert 
        into
            Test1
            (name, value, id) 
        values
            (?, ?, ?)
1274973057265|0|1|batch|/* insert com.play.hibernate1.Test1 */ …
Run Code Online (Sandbox Code Playgroud)

java hibernate p6spy

6
推荐指数
1
解决办法
1752
查看次数

休眠二级ehcache小姐

我正在尝试使用ehcache实现来获得二级hibernate缓存.

我确定这是我正在做的一些明显的noob错误,但我看不出它是什么!

为了测试我的缓存,我正在做以下事情:

创建一个对象并保存它.我在事务中得到了一次,在那里我可以看到我在没有数据库命中的情况下返回对象,这只是休眠的第一级缓存.

然后我提交事务并开始一个新会话.

这次,当我'得到'对象时,我可以在调试中看到来自ehcache的缓存未命中.因为我将它保存在上一个事务中,所以我原本期望该对象在缓存中?

这是我的代码:

  Session session = getSession();   
  session.beginTransaction();

  Test1 test1a = new Test1();
  test1a.setId(5);
  test1a.setName("Test 1");
  test1a.setValue(10);
  // Touch it
  session.save(test1a);

  // Now get it
  Test1 test1b = (Test1)session.get(Test1.class, 5);

  // Within a transaction, the session caches it - no db hit
  System.out.println("GOT object with value "+test1b.getValue());

  session.getTransaction().commit();

  System.out.println("Between sessions");

  session = getSession();
  session.beginTransaction();

  test1b = (Test1)session.get(Test1.class, 5);

  System.out.println("GOT object with value "+test1b.getValue());

  session.getTransaction().commit(); 
Run Code Online (Sandbox Code Playgroud)

这是我的hibernate.cfg.xml的相关部分

<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
Run Code Online (Sandbox Code Playgroud)

还有我的ehcache.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ehcache.sf.net/ehcache.xsd"> 
    <cache name="com.play.hibernate1.Test1" …
Run Code Online (Sandbox Code Playgroud)

java hibernate ehcache

6
推荐指数
1
解决办法
4134
查看次数

工厂方法何时比简单工厂好,反之亦然?

通过Head First Design Patterns一书的工作方式.

我相信我理解简单的工厂和工厂方法,但我很难看到工厂方法带来的简单工厂优势.

如果对象A使用简单工厂来创建其B对象,则客户端可以像这样创建它:

A a = new A(new BFactory());
Run Code Online (Sandbox Code Playgroud)

而如果一个对象使用工厂方法,客户端可以像这样创建它:

A a = new ConcreteA(); // ConcreteA contains a method for instantiating 
                       // the same Bs that the BFactory above creates, with 
                       // the method hardwired into the subclass of A, ConcreteA.
Run Code Online (Sandbox Code Playgroud)

因此,在简单工厂的情况下,客户端使用B工厂组成A,而使用工厂方法,客户端为其想要的B类型选择适当的子类.

他们之间似乎没有多少选择.要么你必须选择你想要用哪个BFactory,要么你必须选择A的正确子类来给你Bs.

在什么情况下哪一个比另一个好?

谢谢大家!

编辑:添加一点混乱IMO是Head First叙述中给出的解释,他们从简单的工厂转换到工厂方法,说(第119页)"特许经营权正在使用你的[简单]工厂创造比萨饼,但开始在剩下的过程中采用他们自己的本土程序:他们将事情稍微区别开来......"他们有一张厨师的照片,他显然做了一些令人厌恶的比萨饼.

但是没有什么可以使用一个简单的工厂来让客户访问bake()方法或进程的任何其他部分.并且没有任何关于使用工厂方法如果有任何问题会有所帮助.

所以在我看来,首先暗示在一家简单工厂使用工厂方法的原因是假的.

oop design-patterns

6
推荐指数
1
解决办法
636
查看次数

java web应用程序的最佳实践

我正在试图找出开发和发布一个相当简单的Web应用程序的最佳方法,而且我遇到了几个问题.我将概述我所做出的决定,因为在某个地方,我显然已经脱离了轨道.非常感谢任何帮助!

我认为这是一个相当简单的Web应用程序.它包含一些引用几个java bean的jsps,以及通常的静态html,js,css和images.

决定1)我希望有一个清晰,干净的发布程序,这样我就可以在我的本地机器上进行开发,然后可靠地发布到生产机器上.因此,我决定将应用程序打包成war文件(包括所有静态资源),以最小化我需要释放的单独的部分.到现在为止还挺好?

决定2)我希望本地机器上的东西尽可能与生产环境相似.因此,在我的html中,我可能会引用一个静态文件,例如http://static.foo.com/file.为了使这段代码能够在dev和prod上无缝工作,我决定在本地开发时将static.foo.com放在我的/ etc/hosts中,这样所有的url都能正常工作而不会改变任何东西.

决定3)我决定使用eclipse和maven为我提供管理和构建项目的最佳实践环境.

所以我现在有一个很好的紧凑设置,除了:

每次我想改变开发中的任何东西,比如html文件中的一行,我必须重建整个项目然后等待tomcat加载战争才能看出它是否是我想要的.所以我的问题是:

1)有没有办法连接eclipse和tomcat,这样我每次都不需要重建战争?即tomcat直视我的实际工作空间来提供静态文件?

2)我认为通过使用/ etc/hosts来反映生产网址可能会让事情变得更难 - 是否有更好的方法不涉及手动更改网址(相对网址当然很好,但是你有很多子网域的地方) ,一个用于静态文件,一个用于动态,你必须写出完整的路径,当然?)

3)这真的是最好的做法吗?人们如何设置,以便一方面平衡自动化,无所不包的构建过程的需求,以及能够快速开发javascript和html和css的速度和灵活性,就像一个刚刚指出的那样快apache在目录下开发了吗?人们发现了什么?

非常感谢!

编辑:非常感谢您的回复!如果我能把它们标记好,我会......这真的帮助了我.我所听到的是,最佳实践是在开发中保留webapp的结构,并在尽可能接近生产的环境中运行它.似乎人们之间的差异在于人们准备将资源热部署到servlet容器的程度,以及为了一点额外的速度或便利而绕过构建过程.那讲得通.再次感谢.

html java eclipse apache tomcat

5
推荐指数
1
解决办法
5298
查看次数