{"id":296,"date":"2011-05-29T11:17:02","date_gmt":"2011-05-29T02:17:02","guid":{"rendered":"http:\/\/www.typea.info\/blog\/index.php\/2011\/05\/29\/spring_tool_suite_spring_mvc_jpajava_persistence_api\/"},"modified":"2011-05-29T11:17:02","modified_gmt":"2011-05-29T02:17:02","slug":"spring_tool_suite_spring_mvc_jpajava_persistence_api","status":"publish","type":"post","link":"https:\/\/www.typea.info\/blog\/index.php\/2011\/05\/29\/spring_tool_suite_spring_mvc_jpajava_persistence_api\/","title":{"rendered":"Spring Tool Suite \u3067 Spring MVC \u304b\u3089 JPA(Java Persistence API) \u3092\u5229\u7528\u3059\u308b"},"content":{"rendered":"<p>Spring Tool Suite \u306e Spring MVC Project \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u3001<a href=\"https:\/\/www.typea.info\/blog\/index.php\/2011\/05\/19\/springsource_tool_suite_spring_mvc_spring_jdbc\">Spring JDBC \u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066<\/a>\u3001JDBC \u3092 <a href=\"https:\/\/www.typea.info\/blog\/index.php\/2011\/05\/27\/spring_tool_suite_springmvc_server_jndi_jdbc\">JNDI \u7d4c\u7531\u3067\u4f7f\u3048\u308b\u3088\u3046<\/a>\u306b\u3001\u4e00\u6b69\u4e00\u6b69\u8a66\u3057\u3066\u304d\u3066\u3001\u3088\u3046\u3084\u304f JPA\u3092\u8a66\u3059\u6e96\u5099\u304c\u3068\u3068\u306e\u3063\u305f\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa01.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"sts_jpa01\" border=\"0\" alt=\"sts_jpa01\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa01_thumb.jpg\" width=\"244\" height=\"205\" \/><\/a> <\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2011\/05\/27\/spring_tool_suite_springmvc_server_jndi_jdbc\">Spring MVC Project \u3092\u4f5c\u6210\u3057\u3001JDBC\u3092JNDI \u304b\u3089\u4f7f\u7528\u3067\u304d\u308b\u72b6\u614b\u306b\u3057\u305f\u30d7\u30ed\u30b8\u30a7\u30af\u30c8<\/a> \u306b\u5bfe\u3057\u3066\u3001Simple Spring JPA Utility Project \u3067\u4f5c\u6210\u3055\u308c\u308b\u3001JPA\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u79fb\u690d\u3057\u3066\u307f\u308b\u3002<\/p>\n<h2>EclipseLink \u304a\u3088\u3073\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8a2d\u5b9a<\/h2>\n<p>JPA \u306e\u30a8\u30f3\u30b8\u30f3\u3068\u3057\u3066\u3001<a href=\"http:\/\/www.eclipse.org\/eclipselink\/\">EclipseLink<\/a> \u3092\u4f7f\u7528\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u3092 Maven \u306e pom.xml \u306b\u884c\u3046\u3002<\/p>\n<h3>repositories \u8981\u7d20\u306b\u3001EcliipseLink \u306e \u30ea\u30dd\u30b8\u30c8\u30ea\u8a2d\u5b9a\u3092\u8ffd\u52a0<\/h3>\n<pre class=\"prettyprint linenums\">&lt;repository&gt;\r\n    &lt;id&gt;EclipseLink Repo&lt;\/id&gt;\r\n    &lt;url&gt;http:\/\/www.eclipse.org\/downloads\/download.php?r=1&amp;amp;nf=1&amp;amp;file=\/rt\/eclipselink\/maven.repo&lt;\/url&gt;\r\n    &lt;snapshots&gt;&lt;enabled&gt;false&lt;\/enabled&gt;&lt;\/snapshots&gt;\r\n&lt;\/repository&gt;<\/pre>\n<h3>\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8a2d\u5b9a<\/h3>\n<p>pom.xml \u306b Simple Spring JPA Utility Project \u3067\u4f5c\u6210\u3055\u308c\u308b\u3001pom.xml \u3092\u53c2\u8003\u306b\u3001\u4f9d\u5b58\u30e9\u30a4\u30d6\u30e9\u30ea\u306e\u8a2d\u5b9a\u3092\u884c\u3046\u3002\u5177\u4f53\u7684\u306b\u306f\u3001dependencies \u8981\u7d20\u306b\u3001\u4ee5\u4e0b\u3092\u8ffd\u52a0<\/p>\n<pre class=\"prettyprint linenums\">&lt;dependency&gt;\r\n    &lt;groupId&gt;javax.persistence&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;persistence-api&lt;\/artifactId&gt;\r\n    &lt;version&gt;1.0&lt;\/version&gt;\r\n&lt;\/dependency&gt;        \r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;org.eclipse.persistence&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;eclipselink&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.2.0&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;org.springframework&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;spring-orm&lt;\/artifactId&gt;\r\n    &lt;version&gt;3.0.0.RELEASE&lt;\/version&gt;\r\n&lt;\/dependency&gt;            \r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;org.springframework&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;spring-aop&lt;\/artifactId&gt;\r\n    &lt;version&gt;3.0.0.RELEASE&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;org.springframework&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;spring-instrument&lt;\/artifactId&gt;\r\n    &lt;version&gt;3.0.0.RELEASE&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;commons-dbcp&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;commons-dbcp&lt;\/artifactId&gt;\r\n    &lt;version&gt;1.2.2&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;org.aspectj&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;aspectjweaver&lt;\/artifactId&gt;\r\n    &lt;version&gt;1.5.4&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;cglib&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;cglib-nodep&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.1_3&lt;\/version&gt;\r\n&lt;\/dependency&gt;<\/pre>\n<h2>\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30af\u30e9\u30b9\u306e\u5b9f\u88c5<\/h2>\n<p>Spring JPA Utility Project \u3067\u4f5c\u6210\u3055\u308c\u308b\u3001JPA\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u304b\u3089\u3001Order\u30af\u30e9\u30b9\u3001Item\u30af\u30e9\u30b9\u3092\u30b3\u30d4\u30fc\u3057\u3066\u304f\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa02.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"sts_jpa02\" border=\"0\" alt=\"sts_jpa02\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa02_thumb.jpg\" width=\"229\" height=\"159\" \/><\/a><\/p>\n<h3>Order.java<\/h3>\n<pre class=\"prettyprint linenums\">package info.typea.mvctest.entity;\r\n\r\nimport java.util.Collection;\r\nimport java.util.LinkedHashSet;\r\n\r\nimport javax.persistence.CascadeType;\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.GeneratedValue;\r\nimport javax.persistence.GenerationType;\r\nimport javax.persistence.Id;\r\nimport javax.persistence.JoinColumn;\r\nimport javax.persistence.OneToMany;\r\nimport javax.persistence.Table;\r\n\r\n\/**\r\n * An order.\r\n *\/\r\n@Entity\r\n@Table(name=&quot;T_ORDER&quot;)\r\npublic class Order {\r\n    \r\n    @Id\r\n    @GeneratedValue(strategy=GenerationType.AUTO)\r\n    private Long id;\r\n    \r\n    private String customer;\r\n    \r\n    @OneToMany(cascade=CascadeType.ALL)\r\n    @JoinColumn(name=&quot;ORDER_ID&quot;)\r\n    private Collection&lt;Item&gt; items = new LinkedHashSet&lt;Item&gt;();\r\n\r\n    \/**\r\n     * @return the customer\r\n     *\/\r\n    public String getCustomer() {\r\n        return customer;\r\n    }\r\n\r\n    \/**\r\n     * @param customer the customer to set\r\n     *\/\r\n    public void setCustomer(String customer) {\r\n        this.customer = customer;\r\n    }\r\n\r\n    \/**\r\n     * @return the items\r\n     *\/\r\n    public Collection&lt;Item&gt; getItems() {\r\n        return items;\r\n    }\r\n\r\n    \/**\r\n     * @param items the items to set\r\n     *\/\r\n    public void setItems(Collection&lt;Item&gt; items) {\r\n        this.items = items;\r\n    }\r\n\r\n    \/**\r\n     * @return the id\r\n     *\/\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n}<\/pre>\n<h3>Item.java<\/h3>\n<pre class=\"prettyprint linenums\">package info.typea.mvctest.entity;\r\n\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.GeneratedValue;\r\nimport javax.persistence.GenerationType;\r\nimport javax.persistence.Id;\r\nimport javax.persistence.ManyToOne;\r\n\r\n\/**\r\n * An item in an order\r\n *\/\r\n@Entity\r\npublic class Item {\r\n    \r\n    @Id\r\n    @GeneratedValue(strategy=GenerationType.AUTO)\r\n    private Long id;\r\n    \r\n    @ManyToOne\r\n    private Order order;\r\n\r\n    private String product;\r\n    \r\n    private double price;\r\n    \r\n    private int quantity;\r\n    \r\n    \/**\r\n     * @return the order\r\n     *\/\r\n    public Order getOrder() {\r\n        return order;\r\n    }\r\n\r\n    \/**\r\n     * @return the product\r\n     *\/\r\n    public String getProduct() {\r\n        return product;\r\n    }\r\n\r\n    \/**\r\n     * @param product the product to set\r\n     *\/\r\n    public void setProduct(String product) {\r\n        this.product = product;\r\n    }\r\n\r\n    \/**\r\n     * @return the price\r\n     *\/\r\n    public double getPrice() {\r\n        return price;\r\n    }\r\n\r\n    \/**\r\n     * @param price the price to set\r\n     *\/\r\n    public void setPrice(double price) {\r\n        this.price = price;\r\n    }\r\n\r\n    \/**\r\n     * @return the quantity\r\n     *\/\r\n    public int getQuantity() {\r\n        return quantity;\r\n    }\r\n\r\n    \/**\r\n     * @param quantity the quantity to set\r\n     *\/\r\n    public void setQuantity(int quantity) {\r\n        this.quantity = quantity;\r\n    }\r\n\r\n    \/**\r\n     * @return the id\r\n     *\/\r\n    public Long getId() {\r\n        return id;\r\n    }\r\n}<\/pre>\n<p>\u52d5\u4f5c\u78ba\u8a8d\u306e\u305f\u3081\u3001\u9069\u5f53\u306bDAO\u30af\u30e9\u30b9\u3092\u4f5c\u6210<\/p>\n<h3>JpaDao.java <\/h3>\n<pre class=\"prettyprint linenums\">package info.typea.mvctest.dao;\r\n\r\nimport info.typea.mvctest.entity.Order;\r\n\r\nimport java.util.List;\r\n\r\npublic interface JpaDao {\r\n    public void saveOrder(Order order);\r\n    public List&lt;Order&gt; findByCustomerLike(String customer);\r\n}<\/pre>\n<h3>JpaDaoImpl.java<\/h3>\n<pre class=\"prettyprint linenums\">package info.typea.mvctest.dao;\r\n\r\nimport info.typea.mvctest.entity.Order;\r\n\r\nimport java.util.List;\r\n\r\nimport javax.persistence.EntityManager;\r\nimport javax.persistence.EntityManagerFactory;\r\nimport javax.persistence.EntityTransaction;\r\nimport javax.persistence.Persistence;\r\n\r\nimport org.springframework.orm.jpa.support.JpaDaoSupport;\r\n\r\npublic class JpaDaoImpl extends JpaDaoSupport implements JpaDao {\r\n\r\n    public void saveOrder(Order order) {\r\n        \r\n        \/\/EntityManagerFactory emf = Persistence.createEntityManagerFactory(&quot;application&quot;);\r\n        EntityManagerFactory emf = getJpaTemplate().getEntityManagerFactory();\r\n        EntityManager em = emf.createEntityManager();\r\n        EntityTransaction et = em.getTransaction();\r\n        et.begin();\r\n        \r\n        em.persist(order);\r\n        \r\n        et.commit();\r\n        em.close();\r\n    }\r\n\r\n    @SuppressWarnings(&quot;unchecked&quot;)\r\n    public List&lt;Order&gt; findByCustomerLike(String customer) {\r\n        \/\/return getJpaTemplate().find(&quot;select o from Order o where o.customer like ?1&quot;, customer);\r\n        return getJpaTemplate().find(&quot;select o from Order o&quot;);\r\n    }\r\n}<\/pre>\n<h2>persistance.xml (\u6c38\u7d9a\u5316\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb) \u306e\u4f5c\u6210<\/h2>\n<p>WEB-INF\/classes\/META-INF\/persistence.xml \u306b\u4f5c\u6210\u3059\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa03.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"sts_jpa03\" border=\"0\" alt=\"sts_jpa03\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa03_thumb.jpg\" width=\"244\" height=\"225\" \/><\/a> <\/p>\n<p>EJB\u74b0\u5883\u3001Web\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u74b0\u5883\u3001JavaSE\u74b0\u5883\u305d\u308c\u305e\u308c\u3067\u3001persistance.xml \u306e\u7f6e\u304d\u5834\u6240\u304c\u7570\u306a\u308b\u306e\u3067\u3001\u6ce8\u610f\u3002<\/p>\n<pre class=\"prettyprint linenums\">&lt;persistence xmlns=&quot;http:\/\/java.sun.com\/xml\/ns\/persistence&quot;\r\n        xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\r\n        xsi:schemaLocation=&quot;http:\/\/java.sun.com\/xml\/ns\/persistence http:\/\/java.sun.com\/xml\/ns\/persistence\/persistence_1_0.xsd&quot;\r\n        version=&quot;1.0&quot;&gt;\r\n\r\n    &lt;persistence-unit name=&quot;application&quot; transaction-type=&quot;RESOURCE_LOCAL&quot;&gt;\r\n        \r\n        &lt;provider&gt;org.eclipse.persistence.jpa.PersistenceProvider&lt;\/provider&gt;\r\n        \r\n        &lt;class&gt;info.typea.mvctest.entity.Item&lt;\/class&gt;\r\n        &lt;class&gt;info.typea.mvctest.entity.Order&lt;\/class&gt;\r\n        &lt;exclude-unlisted-classes&gt;true&lt;\/exclude-unlisted-classes&gt;\r\n        \r\n        &lt;properties&gt;\r\n            &lt;property name=&quot;eclipselink.logging.level&quot; value=&quot;FINEST&quot;\/&gt; \r\n            &lt;property name=&quot;javax.persistence.jtaDataSource&quot; value=&quot;java:comp\/env\/jdbc\/db2&quot;\/&gt;\r\n            &lt;!-- &lt;property name=&quot;eclipselink.ddl-generation&quot; value=&quot;create-tables&quot; \/&gt;  --&gt;\r\n            &lt;property name=&quot;eclipselink.ddl-generation&quot; value=&quot;none&quot; \/&gt;\r\n            &lt;property name=&quot;eclipselink.ddl-generation.output-mode&quot; value=&quot;database&quot; \/&gt;\r\n        &lt;\/properties&gt;\r\n    &lt;\/persistence-unit&gt;\r\n&lt;\/persistence&gt;<\/pre>\n<h2>JDBC \u3092 JNDI \u306b\u767b\u9332<\/h2>\n<p><a href=\"https:\/\/www.typea.info\/blog\/index.php\/2011\/05\/27\/spring_tool_suite_springmvc_server_jndi_jdbc\">\u3053\u3061\u3089\u3092\u53c2\u7167<\/a><\/p>\n<ul>\n<li>tc Server \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210 <\/li>\n<li>JDBC \u30c9\u30e9\u30a4\u30d0\u3092\u3001tc Server \u306e lib \u306b\u7f6e\u304f <\/li>\n<li>context.xml \u306b\u8a2d\u5b9a\u3092\u8a18\u8ff0 <\/li>\n<\/ul>\n<p><strike>context.xml \u306bJNDI\u306e\u8a18\u8ff0\u3092\u3057\u3066\u3082\u3001\u9069\u5b9c\u521d\u671f\u5316\u3055\u308c\u3066\u3057\u307e\u3046\u3002\u3002\u3002 tc server \u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u5225\u9014\u4f5c\u6210\u3057\u3001\u305d\u3053\u306b JNDI \u306e\u8a2d\u5b9a\u3092\u3057\u3066\u3001\u305d\u306e<\/strike><a href=\"http:\/\/static.springsource.com\/projects\/tc-server\/6.0\/getstart\/cgscreateinst.html\"><strike>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u5143\u306b\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210<\/strike><\/a><strike>\u30fb\u30fb\u30fb\u306a\u3093\u3066\u624b\u9806\u3092\u8e0f\u3081\u3070\u3046\u307e\u304f\u3044\u304f\u306e\u304b\u306a\u3041\u3068\u601d\u3063\u305f\u308a\u3057\u3066\u3044\u308b\u304c\u3001\u672a\u691c\u8a3c\u3002<\/strike><\/p>\n<p><strike><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_contextxml.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px\" title=\"sts_contextxml\" border=\"0\" alt=\"sts_contextxml\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_contextxml_thumb.jpg\" width=\"433\" height=\"186\" \/><\/a> <\/strike><\/p>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc\u304b\u3089 context.xml \u3092\u7de8\u96c6\u3057\u3066\u304a\u304f\u3068\u3001\u3068\u308a\u3042\u3048\u305a\u6d88\u3048\u306a\u3055\u305d\u3046\u3060\u3002<\/p>\n<h3>context.xml \u306b\u3001\u4ee5\u4e0b\u306e\u69d8\u306a\u3001JNDI \u30ea\u30bd\u30fc\u30b9\u3092\u767b\u9332<\/h3>\n<pre class=\"prettyprint linenums\">&lt;Context docBase=&quot;C:\\springsource\\vfabric-tc-server-developer-2.5.0.RELEASE\\tc_server_1\\wtpwebapps\\mvctest&quot; path=&quot;\/mvctest&quot; reloadable=&quot;true&quot; source=&quot;org.eclipse.jst.jee.server:mvctest&quot;&gt;\r\n &lt;Resource name=&quot;jdbc\/db2&quot; auth=&quot;Container&quot;\r\n             type=&quot;javax.sql.DataSource&quot; \r\n             driverClassName=&quot;com.ibm.db2.jcc.DB2Driver&quot;\r\n             url=&quot;jdbc:db2:\/\/192.168.10.77:50000\/sample&quot;\r\n             username=&quot;db2inst1&quot; \r\n             password=&quot;xxxxx&quot; \r\n             maxActive=&quot;20&quot; maxIdle=&quot;10&quot;\r\n             maxWait=&quot;-1&quot;\/&gt; \r\n&lt;\/Context&gt;<\/pre>\n<h3>WEB-INF\/web.xml \u306b\u4ee5\u4e0b\u3092\u8ffd\u8a18<\/h3>\n<pre class=\"prettyprint linenums\">&lt;resource-ref&gt;\r\n    &lt;description&gt;DB2 Datasource example&lt;\/description&gt;\r\n    &lt;res-ref-name&gt;jdbc\/db2&lt;\/res-ref-name&gt;\r\n    &lt;res-type&gt;javax.sql.DataSource&lt;\/res-type&gt;\r\n    &lt;res-auth&gt;Container&lt;\/res-auth&gt;\r\n&lt;\/resource-ref&gt;<\/pre>\n<h2>\u5404\u7a2e Bean \u306e\u767b\u9332<\/h2>\n<p>root-context.xml \u306b\u3001\u4ee5\u4e0b\u306e Bean \u3092\u767b\u9332<\/p>\n<pre class=\"prettyprint linenums\">&lt;bean id=&quot;transactionManager&quot; class=&quot;org.springframework.orm.jpa.JpaTransactionManager&quot;&gt;\r\n    &lt;property name=&quot;entityManagerFactory&quot; ref=&quot;entityManagerFactory&quot; \/&gt;\r\n&lt;\/bean&gt;\r\n&lt;bean id=&quot;entityManagerFactory&quot; class=&quot;org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean&quot;&gt;\r\n    &lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot; \/&gt;\r\n    &lt;property name=&quot;persistenceUnitName&quot; value=&quot;application&quot; \/&gt;\r\n    &lt;property name=&quot;loadTimeWeaver&quot; ref=&quot;loadTimeWeaver&quot; \/&gt;\r\n    &lt;property name=&quot;jpaVendorAdapter&quot;&gt;\r\n        &lt;bean class=&quot;org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter&quot;&gt;\r\n            &lt;property name=&quot;showSql&quot; value=&quot;true&quot; \/&gt;\r\n            &lt;property name=&quot;generateDdl&quot; value=&quot;true&quot; \/&gt;\r\n        &lt;\/bean&gt;\r\n    &lt;\/property&gt;\r\n&lt;\/bean&gt;    \r\n&lt;bean id=&quot;loadTimeWeaver&quot; class=&quot;org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver&quot;\/&gt;\r\n \r\n&lt;bean id=&quot;jpaDao&quot;\r\n    class=&quot;info.typea.mvctest.dao.JpaDaoImpl&quot;&gt;\r\n    &lt;property name=&quot;entityManagerFactory&quot; ref=&quot;entityManagerFactory&quot;\/&gt;\r\n&lt;\/bean&gt;\r\n&lt;bean id=&quot;dataSource&quot; class=&quot;org.springframework.jndi.JndiObjectFactoryBean&quot;&gt;\r\n    &lt;property name=&quot;jndiName&quot; value=&quot;java:comp\/env\/jdbc\/db2&quot;\/&gt;\r\n    &lt;property name=&quot;lookupOnStartup&quot; value=&quot;false&quot;\/&gt;\r\n    &lt;property name=&quot;cache&quot; value=&quot;true&quot;\/&gt;\r\n    &lt;property name=&quot;proxyInterface&quot; value=&quot;javax.sql.DataSource&quot;\/&gt;\r\n&lt;\/bean&gt;<\/pre>\n<h2>Java Agent \u306e\u767b\u9332<\/h2>\n<p>InstrumentationLoadTimeWeaver \u30af\u30e9\u30b9\u3092\u5229\u7528\u3059\u308b\u305f\u3081\u306b\u306f\u3001<a href=\"http:\/\/www.javainthebox.net\/laboratory\/J2SE1.5\/MiscAPI\/Instrumentation\/Instrumentation.html\">Java Agent<\/a> \u3092\u767b\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/jpa_07.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"jpa_07\" border=\"0\" alt=\"jpa_07\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/jpa_07_thumb.jpg\" width=\"374\" height=\"234\" \/><\/a> <\/p>\n<p><a href=\"http:\/\/www.javainthebox.net\/laboratory\/J2SE1.5\/MiscAPI\/Instrumentation\/Instrumentation.html\">Java Agent \u3068\u306f\u3001Java \u306e\u30d0\u30a4\u30c8\u30b3\u30fc\u30c9\u3092\u64cd\u4f5c\u3059\u308b\u3001AOP\u306b\u306f\u6b20\u304b\u305b\u306a\u3044\u6a5f\u80fd<\/a>\u3002<\/p>\n<p>Servers \u30d3\u30e5\u30fc\u304b\u3089\u3001\u30b5\u30fc\u30d0\u30fc\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3001\u30a8\u30c7\u30a3\u30bf\u304b\u3089\u3001Open launch configuration \u3092\u9078\u629e\u3059\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/jpa_08.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"jpa_08\" border=\"0\" alt=\"jpa_08\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/jpa_08_thumb.jpg\" width=\"379\" height=\"192\" \/><\/a> <\/p>\n<p>Arguments \u30bf\u30d6\u304b\u3089\u3001VM arguments \u306e Variables\u2026\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\u3001\u958b\u3044\u305f\u753b\u9762\u304b\u3089\u3001Edit Variables&#8230; \u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/jpa_09.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"jpa_09\" border=\"0\" alt=\"jpa_09\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/jpa_09_thumb.jpg\" width=\"373\" height=\"153\" \/><\/a> <\/p>\n<\/p>\n<\/p>\n<p>New \u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\u3057\u3001\u8d77\u52d5\u3057\u305f\u30c0\u30a4\u30a2\u30ed\u30b0\u306b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5185\u5bb9\u3092\u8a2d\u5b9a<\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" width=\"729\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"54\">\u9805\u76ee<\/td>\n<td valign=\"top\" width=\"100\">\u5185\u5bb9<\/td>\n<td valign=\"top\" width=\"431\">\u4f8b<\/td>\n<td valign=\"top\" width=\"142\">\u5099\u8003<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"54\">Name<\/td>\n<td valign=\"top\" width=\"100\">\u4efb\u610f\u306e\u540d\u524d<\/td>\n<td valign=\"top\" width=\"431\">javaagent<\/td>\n<td valign=\"top\" width=\"142\">&#160;<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"54\">Value <\/td>\n<td valign=\"top\" width=\"100\">-javaagent:\/\u30a8\u30fc\u30b8\u30a7\u30f3\u30c8\u3078\u306e\u30d1\u30b9<\/td>\n<td valign=\"top\" width=\"431\">-javaagent:\/Users\/piroto\/.m2\/repository\/org\/springframework\/spring-instrument\/3.0.0.RELEASE\/spring-instrument-3.0.0.RELEASE.jar<\/td>\n<td valign=\"top\" width=\"142\">\u3068\u308a\u3042\u3048\u305a\u3001Maven\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u5185\u306ejar\u3078\u306e\u30d1\u30b9 \u203b Users\/piroto \u306f\u30e6\u30fc\u30b6\u30fc\u30c7\u30a3\u30ec\u30af\u30c8\u30ea<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&#160;<\/p>\n<p>\u6700\u5f8c\u306b\u3001VM arguments \u306b\u4eca\u8a2d\u5b9a\u3057\u305f\u5909\u6570 ${javaagent} \u3092\u8ffd\u8a18\u3059\u308b\u3002<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/jpa_10.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"jpa_10\" border=\"0\" alt=\"jpa_10\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/jpa_10_thumb.jpg\" width=\"378\" height=\"155\" \/><\/a><\/p>\n<h2>MVC \u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u306b\u51e6\u7406\u3092\u8a18\u8ff0<\/h2>\n<pre class=\"prettyprint linenums\">package info.typea.mvctest;\r\n\r\nimport info.typea.mvctest.dao.JpaDao;\r\nimport info.typea.mvctest.dao.Staff;\r\nimport info.typea.mvctest.dao.StaffDao;\r\nimport info.typea.mvctest.entity.Item;\r\nimport info.typea.mvctest.entity.Order;\r\n\r\nimport java.util.List;\r\n\r\nimport org.slf4j.Logger;\r\nimport org.slf4j.LoggerFactory;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\n\r\n\/**\r\n * Handles requests for the application home page.\r\n *\/\r\n@Controller\r\npublic class HomeController {\r\n    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);\r\n    private JpaDao jpadao;\r\n    public void setJpaDao(JpaDao jpadao) {\r\n        this.jpadao = jpadao;\r\n    }\r\n\r\n    \/**\r\n     * Simply selects the home view to render by returning its name.\r\n     *\/\r\n    @RequestMapping(value=&quot;\/&quot;, method=RequestMethod.GET)\r\n    public String home() {\r\n        logger.info(&quot;Welcome home!&quot;);\r\n        return &quot;home&quot;;\r\n    }\r\n\r\n    @RequestMapping(value=&quot;\/save_order&quot;)\r\n    public String saveOrder() {\r\n        logger.info(&quot;insert test data!&quot;);\r\n\r\n        Order order = new Order();\r\n        order.setCustomer(&quot;customer&quot;);\r\n        Item item = new Item();\r\n        item.setPrice(100d);\r\n        item.setProduct(&quot;product&quot;);\r\n        order.getItems().add(item);\r\n\r\n        this.jpadao.saveOrder(order);\r\n\r\n        logger.info(&quot;ORDER id:&quot; + order.getId());\r\n\r\n        List&lt;Order&gt; os = this.jpadao.findByCustomerLike(&quot;&quot;);\r\n        for (Order o : os) {\r\n            logger.info(&quot;o:id &quot; + o.getId());\r\n        }\r\n        return &quot;home&quot;;\r\n    }\r\n}<\/pre>\n<p>\/save_order \u3067\u3001\u9069\u5f53\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u767b\u9332\u3057\u3066\u3001\u767b\u9332\u3055\u308c\u3066\u3044\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30ed\u30b0\u306b\u51fa\u529b\u3059\u308b\u8a18\u8ff0\u3002<\/p>\n<h2>\u5b9f\u884c<\/h2>\n<p><a title=\"http:\/\/localhost:8080\/mvctest\/save_order\" href=\"http:\/\/localhost:8080\/mvctest\/save_order\">http:\/\/localhost:8080\/mvctest\/save_order<\/a> \u3092\u5b9f\u884c<\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa06.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"sts_jpa06\" border=\"0\" alt=\"sts_jpa06\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa06_thumb.jpg\" width=\"461\" height=\"278\" \/><\/a>&#160;<\/p>\n<p>\u4e0a\u8a18\u3092\u4f55\u5ea6\u304b\u5b9f\u884c\u3002\u6b63\u3057\u304f\u5b9f\u884c\u3055\u308c\u3066\u3001\u767b\u9332\u3055\u308c\u305f\u30c7\u30fc\u30bf\u304c\u53d6\u5f97\u3067\u304d\u305f\u3002<\/p>\n<h3>\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u78ba\u8a8d<\/h3>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa07.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"sts_jpa07\" border=\"0\" alt=\"sts_jpa07\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa07_thumb.jpg\" width=\"362\" height=\"125\" \/><\/a> <\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa08.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"sts_jpa08\" border=\"0\" alt=\"sts_jpa08\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa08_thumb.jpg\" width=\"364\" height=\"97\" \/><\/a> <\/p>\n<p><a href=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa09.jpg\"><img loading=\"lazy\" decoding=\"async\" style=\"border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px\" title=\"sts_jpa09\" border=\"0\" alt=\"sts_jpa09\" src=\"https:\/\/www.typea.info\/blog\/wp-content\/uploads\/image\/SpringToolSuiteSpringMVCJPAJavaPersisten_8502\/sts_jpa09_thumb.jpg\" width=\"369\" height=\"71\" \/><\/a> <\/p>\n<\/p>\n<\/p>\n<p>\u30c7\u30fc\u30bf\u3082\u6b63\u3057\u304f\u3067\u304d\u3066\u3044\u308b\u3002<\/p>\n<p>\u3044\u3058\u3087\u3002<\/p>\n<p>&#160;<\/p>\n<p>JPA \u306e\u4ed5\u7d44\u307f\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u306e\u672c\u306b\u975e\u5e38\u306b\u4e01\u5be7\u306a\u8aac\u660e\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u305d\u306e\u4ed6\u306e\u9805\u76ee\u306b\u3064\u3044\u3066\u306e\u8aac\u660e\u3082\u975e\u5e38\u306b\u308f\u304b\u308a\u3084\u3059\u3044\u826f\u66f8\u3002<\/p>\n<p>&#160;<iframe style=\"width: 120px; height: 240px\" marginheight=\"0\" src=\"http:\/\/rcm-jp.amazon.co.jp\/e\/cm?lt1=_blank&amp;bc1=FFFFFF&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=typea09-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=4798120545\" frameborder=\"0\" marginwidth=\"0\" scrolling=\"no\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring Tool Suite \u306e Spring MVC Project \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304b\u3089\u3001Spring JDBC \u3092\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066\u3001JDBC \u3092 JNDI \u7d4c\u7531\u3067\u4f7f\u3048\u308b\u3088\u3046\u306b\u3001\u4e00\u6b69\u4e00\u6b69\u8a66\u3057\u3066\u304d\u3066\u3001\u3088\u3046\u3084\u304f JPA [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"sns_share_botton_hide":"","vkExUnit_sns_title":"","_vk_print_noindex":"","sitemap_hide":"","_veu_custom_css":"","veu_display_promotion_alert":"","vkexunit_cta_each_option":"","footnotes":""},"categories":[46,47,48],"tags":[],"class_list":["post-296","post","type-post","status-publish","format-standard","hentry","category-java-ee","category-spring","category-springsource-tool-suite"],"veu_head_title_object":{"title":"","add_site_title":""},"_links":{"self":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=296"}],"version-history":[{"count":0,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/posts\/296\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=296"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.typea.info\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}