继续学习seam中自带的例子,今天学习的是booking,是一个颇具功能的旅馆预定系统。
数据库我用的是mysql。
“todo”的部分日后在慢慢研究,呵呵。
步骤如下
- 创建一个叫“booking”的seam web project。
- 在“booking-ejb”工程下的“ejbModule”下新建一个“org.domain.booking.entity”的package。
- 拷贝java文件。
Booking.java、Hotel.java和User.java拷贝到entity下面。
其余的java文件拷贝到session下面。 - ~~\booking\resources\WEB-INF下4个xml文件拷贝到自己的WEB-INF下面,覆盖掉自动生成的文件。
- 修正java的错误
- 参考~~\booking\resources\META-INF下的persistence.xml文件,最终的内容如下,
......
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:/bookingEntityManagerFactory"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
......
这里只列出了<properties>部分的内容,其余部分是自动生成的内容。 - 把~~\booking\resources\messages.properties的拷贝src下面,删除掉自动生成的messages_en.properties文件。
- 用~~\booking\resources\import.sql文件覆盖掉eclipse自动生成的那个。
- 把~~\booking\resources\META-INF下的jboss.xml文件,拷贝到booking-ejb工程的ejbModule\META-INF下面。
- 在components.properties文件中,添加一行“distributable true”内容。
※“~~”指seam路径。
功能特点:
- 有分页功能--main.xhtml,学习“more results”链接的写法。
- 自动赋值的rich:calendar的写法--book.xhtml。
- 在main.xhtml中的“view hotel”链接传递的是hotel对象。
理解点:
- jboss.xml的作用?
好像要和ejb-jar.xml放在一起,拷贝到“booking-ejb”工程下的“ejbModule”下的“META-INF”下。
//todo - persistence.xml中,如果hibernate.hbm2ddl.auto的value="update"就不能够导入import.sql的数据,但value="create"或value="create-drop"就可以。原因?
//todo - persistence.xml中,属性hibernate.cache.provider_class的作用?
//todo
//todo
END