質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
ORM

ORM(オブジェクト関係マッピング)はオブジェクト指向のシステムとリレーショナルデータベースの間でマッピングを行う技術です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

0回答

2665閲覧

JAPでデータベースを更新することが出来ません。

rabi0615

総合スコア7

ORM

ORM(オブジェクト関係マッピング)はオブジェクト指向のシステムとリレーショナルデータベースの間でマッピングを行う技術です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2017/05/10 23:45

###質問内容
お世話になります。よろしくお願いします。

参考書を見ながらSpringを使用したJPAの勉強をしています。
サンプルプログラムを作成したのですが、
抽出は問題なく動いてくれるのですが更新処理が動いてくれません。
エラーも起きない状態で処理が終わってしまいます。

ネットで検索した結果や抽出がうまくいっているところから,
おそらく@Transactionalが正しく動作していないのだと思うのですが、
どの部分を修正すればよいのか、なのかわからない状態です。

ご指摘満載のコードだと思いますが、
以下に必要と思われる設定ファイルとコードを記載します。

必要な情報があればご教授ください。
よろしくお願いします。

###動作環境
Windows7(home)
java1.7.0_76
MySQL5.7
Spring3.2.3.RELEASE

###発生している問題・エラーメッセージ
特にエラーは起こりません。

###設定ファイル(application-config.xml)

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> <!--データベースのプロパティ--> <context:property-placeholder location="classpath:spring/database.properties" /> <!--コネクションプーリング--> <bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> <property name="driverClassName" value="${database.driverClassName}" /> <property name="url" value="${database.url}" /> <property name="username" value="${database.username}" /> <property name="password" value="${database.password}" /> <property name="testOnBorrow" value="true" /> <property name="testOnReturn" value="true" /> <property name="testWhileIdle" value="true" /> <property name="timeBetweenEvictionRunsMillis" value="1800000" /> <property name="numTestsPerEvictionRun" value="3" /> <property name="minEvictableIdleTimeMillis" value="1800000" /> </bean> <!--DBのファクトリクラスのbean宣言--> <bean class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" id="entityManagerFactory"> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="true" /> </bean> </property> <property name="persistenceUnitName" value="persistenceUnit" /> <property name="dataSource" ref="dataSource" /> <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /> </bean> <!--トランザクション処理宣言--> <bean class="org.springframework.orm.jpa.JpaTransactionManager" id="transactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <!--トランザクション処理宣言--> <tx:annotation-driven transaction-manager="transactionManager"/> <!--@Repositoryを使う宣言--> <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <jpa:repositories base-package="jp.springmyapp.dao" /> <!-- @Repositoryがついているクラスでおきた例外を変換するBeanのpost-processor--> <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/> </beans>

###設定ファイル(database.properties)

database.driverClassName=com.mysql.jdbc.Driver database.url=jdbc:mysql://localhost:3306/spring_db database.username=root database.password=password

###設定ファイル(persistence.xml)

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="persistenceUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/spring_db"/> </properties> </persistence-unit> </persistence>

###ソースコード(UserDao.java)

package jp.springmyapp.dao; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import jp.springmyapp.model.UserModel; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; //DB関連アノテーション @Repository public class UserDao{ @PersistenceContext private EntityManager persistenceUnit; @Transactional public void saveAndFlush(UserModel mydata) { //追加 persistenceUnit.persist(mydata); } public List<UserModel> findByIdLike(String searchWord) { //クエリー実行(fromの後の名称は「テーブル名」ではなく「クラス(モデル)名」) Query query = persistenceUnit.createQuery("from UserModel where id like :sid") .setParameter("sid", searchWord); //結果の取得 @SuppressWarnings("unchecked") List<UserModel> list = query.getResultList(); return list; } public List<UserModel> findAll() { //クエリー実行(fromの後の名称は「テーブル名」ではなく「クラス(モデル)名」) Query query = persistenceUnit.createQuery("from UserModel"); //結果の取得 @SuppressWarnings("unchecked") List<UserModel> list = query.getResultList(); return list; } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問