11package org .javawebstack .orm ;
22
3+ import org .javawebstack .orm .connection .pool .PooledSQL ;
4+ import org .javawebstack .orm .connection .pool .SQLPool ;
35import org .javawebstack .orm .exception .ORMConfigurationException ;
46import org .javawebstack .orm .exception .ORMQueryException ;
57import org .javawebstack .orm .filter .DefaultQueryFilter ;
68import org .javawebstack .orm .filter .QueryFilter ;
79import org .javawebstack .orm .migration .AutoMigrator ;
810import org .javawebstack .orm .query .Query ;
9- import org .javawebstack .orm .wrapper .SQL ;
10- import org .javawebstack .orm .wrapper .builder .SQLQueryString ;
11+ import org .javawebstack .orm .renderer .SQLQueryString ;
1112
1213import java .lang .reflect .Field ;
1314import java .sql .SQLException ;
@@ -25,14 +26,14 @@ public static <T extends Model> Repo<T> get(Class<T> model) {
2526 }
2627
2728 private final TableInfo info ;
28- private final SQL connection ;
29+ private final SQLPool pool ;
2930 private final List <Observer <T >> observers = new ArrayList <>();
3031 private Accessible accessible ;
3132 private QueryFilter filter ;
3233
33- public Repo (Class <T > clazz , SQL connection , ORMConfig config ) throws ORMConfigurationException {
34+ public Repo (Class <T > clazz , SQLPool pool , ORMConfig config ) throws ORMConfigurationException {
3435 this .info = new TableInfo (clazz , config );
35- this .connection = connection ;
36+ this .pool = pool ;
3637 filter = new DefaultQueryFilter (info .getFilterable (), info .getSearchable ());
3738 }
3839
@@ -119,12 +120,13 @@ private void executeCreate(T entry) {
119120 if (map .containsKey (idCol ) && map .get (idCol ) == null )
120121 map .remove (idCol );
121122 }
122- SQLQueryString qs = getConnection ().builder ().buildInsert (info , map );
123- SQL connection = Session .current () != null ? Session .current ().getConnection () : this .connection ;
124- int id = connection .write (qs .getQuery (), qs .getParameters ().toArray ());
125- if (info .isAutoIncrement ())
126- info .getField (info .getIdField ()).set (entry , id );
127- entry .setEntryExists (true );
123+ try (PooledSQL connection = pool .get ()) {
124+ SQLQueryString qs = connection .builder ().buildInsert (info , map );
125+ int id = connection .write (qs .getQuery (), qs .getParameters ().toArray ());
126+ if (info .isAutoIncrement ())
127+ info .getField (info .getIdField ()).set (entry , id );
128+ entry .setEntryExists (true );
129+ }
128130 } catch (SQLException | IllegalAccessException throwables ) {
129131 throw new ORMQueryException (throwables );
130132 }
@@ -217,8 +219,8 @@ public void autoMigrate() {
217219 AutoMigrator .migrate (this );
218220 }
219221
220- public SQL getConnection () {
221- return connection ;
222+ public SQLPool getPool () {
223+ return pool ;
222224 }
223225
224226 public TableInfo getInfo () {
0 commit comments