Подключение к MySQL c помощью DataSource [требует правки]

249
12 октября 2017, 10:06

кто может скинуть простейший пример,с подключением к MySQL c помощью DataSource. Просто класс с подключением,без дао и энтити. Заранее спасибо.

Answer 1

Рассмотрим на примере WildFly 10.

EJB будет выглядеть примерно так:

@Stateless
public class TestBean {
   @Resource(mappedName = "java:jboss/datasources/NameDS")
   private DataSource ds;
   @Resource
   protected javax.ejb.SessionContext ctx;
   public void method() {
      Connection conn = null;
      try {
         conn = ds.getConnection();
         // Используем Connection
      } catch (Throwable e) {
         ctx.setRollbackOnly();
      } finally {
         if (conn != null) {
            conn.close();
         }
      }
   }
}

Потребуется указать имя DataSource. С conn делаем всё что нужно, используя JDBC.

В настройках (например, standalone.xml) надо определить DataSource:

<xa-datasource jndi-name="java:jboss/datasources/NameDS" pool-name="NameDS" use-java-context="true" statistics-enabled="true">
  <xa-datasource-property name="URL">
    jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8
  </xa-datasource-property>
  <driver>mysqlxa</driver>
  <xa-pool>
    <min-pool-size>1</min-pool-size>
    <max-pool-size>30</max-pool-size>
    <prefill>false</prefill>
    <use-strict-min>false</use-strict-min>
    <flush-strategy>IdleConnections</flush-strategy>
    <is-same-rm-override>false</is-same-rm-override>
    <interleaving>false</interleaving>
    <pad-xid>false</pad-xid>
    <wrap-xa-resource>true</wrap-xa-resource>
  </xa-pool>
  <security>
    <user-name>test</user-name>
    <password>q</password>
  </security>
  <validation>
    <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker" />
    <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter" />
  </validation>
  <timeout>
    <idle-timeout-minutes>180</idle-timeout-minutes>
  </timeout>
  <statement>
    <track-statements>true</track-statements>
  </statement>
</xa-datasource>

Как определять DataSource зависит от используемой СУБД, необходимости использования XA и т.п.

Так же необходимо будет определить драйвер. Что то вроде этого:

<drivers>
   <driver name="mysqlxa" module="com.mysql">
      <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
   </driver>
</drivers>
READ ALSO
Как сохранять состояние RecyclerView?

Как сохранять состояние RecyclerView?

На данный момент приложение сохраняет состояние RecyclerView при выходе на рабочий стол через клавишу HomeОднако, если я уйду на другой фрагмент,...

250
Вызвать метод класса Activity из ViewHolder

Вызвать метод класса Activity из ViewHolder

Имеем ReciclerView, на экране отображается списокСписок обновляется каждые 5 сек

231
Найти совпадения в полях объектов

Найти совпадения в полях объектов

У меня есть List<Document> listOfDocuments = new ArrayList<>() объектов

189