рдкреНрд░рджрд░реНрд╢рди рдХреЗ рддрд╣рдд рдЦрд╛рди рдкрдВрдЦреЛрдВ рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рднрд╛рдЧ 2

рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ , рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдкрдХрдбрд╝реЗ рдЧрдП рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдЙрджрд╛рд╣рд░рдг рдиреЗ рдореЗрд░рд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВред


рд╕рд╛рд░ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИ: рдЬрдм рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╕рдордп-рд╕рдордп рдкрд░ рд╣рдореЗрдВ OOME рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рддреНрд░реБрдЯрд┐ рддреИрд░ рд░рд╣реА рдереА: рдХреБрдЫ рдбреЗрдЯрд╛ рдкрд░ рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рджреВрд╕рд░реЛрдВ рдкрд░ рдЗрд╕реЗ рдХрднреА рднреА рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдРрд╕реЗ рд╡рд┐рдЪрд▓рди рдХреЗ рдЕрдзреНрдпрдпрди рдореЗрдВ, рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдХреНрд░рдо рд╕реНрдкрд╖реНрдЯ рд╣реИ:


  • рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрдердХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рдзреНрд╡рдЬ рдХреЗ -XX:+HeapDumpOnOutOfMemoryError , рддрд╛рдХрд┐ VM рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рдвреЗрд░ рдХрд╛ рдвреЗрд░ рдмрдирд╛ рд╕рдХреЗ
  • рдПрдХ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВ
  • рдкрд░рд┐рдгрд╛рдореА рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЛ рд▓реЗрдВ рдФрд░ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ

рдкрд╣рд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд╛рди рдХреАред рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдЦреЛрд▓рд╛

рдХрд▓рд╛рдХрд╛рд░реЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдкреВрд░реНрдг рдЖрдХрд╛рд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд┐рддреНрд░ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "рдирдпрд╛ рдЯреИрдм рдореЗрдВ рдЫрд╡рд┐ рдЦреЛрд▓реЗрдВ" рдЪреБрдиреЗрдВ:



рдкрд╣рд▓реЗ рд╕рдиреНрдирд┐рдХрдЯрди рдореЗрдВ, 71 рдПрдордмреА рдХреЗ рджреЛ рдмрд░рд╛рдмрд░ рдЯреБрдХрдбрд╝реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ 6 рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред


рдХреЙрд▓ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рдШреБ рдзреВрдореНрд░рдкрд╛рди рдиреЗ рд╕рднреА "of" рдХреЛ рдбреЙрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреАред


рдкрд╣рд▓реА 10 рд▓рд╛рдЗрдиреЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ
 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.base/java.util.Arrays.copyOf(Arrays.java:3745) at java.base/java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:172) at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:538) at java.base/java.lang.StringBuilder.append(StringBuilder.java:174) at com.p6spy.engine.common.Value.quoteIfNeeded(Value.java:167) at com.p6spy.engine.common.Value.convertToString(Value.java:116) at com.p6spy.engine.common.Value.toString(Value.java:63) at com.p6spy.engine.common.PreparedStatementInformation.getSqlWithValues(PreparedStatementInformation.java:56) at com.p6spy.engine.common.P6LogQuery.logElapsed(P6LogQuery.java:203) at com.p6spy.engine.logging.LoggingEventListener.logElapsed(LoggingEventListener.java:107) at com.p6spy.engine.logging.LoggingEventListener.onAfterAnyExecute(LoggingEventListener.java:44) at com.p6spy.engine.event.SimpleJdbcEventListener.onAfterExecuteUpdate(SimpleJdbcEventListener.java:121) at com.p6spy.engine.event.CompoundJdbcEventListener.onAfterExecuteUpdate(CompoundJdbcEventListener.java:157) at com.p6spy.engine.wrapper.PreparedStatementWrapper.executeUpdate(PreparedStatementWrapper.java:100) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3176) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3690) at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:90) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356) at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1454) at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:511) at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3290) at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2486) at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:178) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:39) at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:271) at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:104) at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:532) 

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдкреНрд░рд┐рдВрдЧ + рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдмрдврд╝реЛрддрд░реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдЬреЛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдпрд╣реА рдХрд░рддрд╛ рд╣реИ), рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ p6spy рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдПрдХ рд╕рд░рд▓ рдФрд░ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдФрд░ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдорд╛рдкрддрд╛ рд╣реИред рдЗрд╕рдХреА рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдПрдХ рдХреНрд╡реЗрд░реА рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╣реИ рдЬреЛ рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рд▓реЙрдЧ рд╕реЗ рдХреНрд╡реЗрд░реА рдХреЛ рддреБрд░рдВрдд рддрд░реНрдХ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд╕рд╛рде рдЙрдкрджреНрд░рд╡ рдХреЗ рдмрд┐рдирд╛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдХреНрдпрд╛ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдЙрдирдХреЗ рдмрдЬрд╛рдп рд▓рд┐рдЦрддрд╛ рд╣реИ ? ), рдЬреЛ @Convert рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ ? рдкреНрд░рдХрд╛рд░ Date / LocalDate / LocalTime рдФрд░ рдЙрдирдХреЗ рдбреЗрд░рд┐рд╡реЗрдЯрд┐рд╡ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВред IMHO, рдбреЗрд╡рд▓рдкрд░ рдХреА рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдореЗрдВ рдПрдХ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рдЦреВрдиреА рдИред


рд░рд┐рдкреЛрд░реНрдЯ рд╡рд╛рд▓реА рдЗрдХрд╛рдИ рдРрд╕реА рджрд┐рдЦрддреА рд╣реИ:


 @Entity public class ReportEntity { @Id @GeneratedValue private long id; @Lob private byte[] reportContent; } 

рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдЗрдХрд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХрд┐рд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ / рдЙрддрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ xslx / pdf рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдХрд░рдг рдЗрд╕ рд░реВрдк рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХ / рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред


рдФрд░ рдлрд┐рд░ рдПрдХ рднрдпрд╛рдирдХ рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдмрд╛рдд рд╣реБрдИ: рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХрд╛ рд╕рдВрдпреЛрдЬрди, рдмрд╛рдЗрдЯреНрд╕ рдФрд░ p6spy рдХреА рдПрдХ рд╕рд░рдгреА рдПрдХ рдЯрд╛рдЗрдо рдмрдо рдореЗрдВ рдмрджрд▓ рдЧрдИ, рдЬреЛ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЪреБрдкрдЪрд╛рдк рдЯрд┐рдХ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЬрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдерд╛, рддреЛ рд╡рд┐рд╕реНрдлреЛрдЯ рд╣реБрдПред


рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрдХрд╛рдИ рдХреЛ рдмрдЪрд╛рддреЗ рд╕рдордп, p6spy рдиреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ 2 рд╣реИрдВ: рдХреБрдВрдЬреА рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рд╕реНрд╡рдпрдВред P6spy рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрджрд┐ рддрд░реНрдХ рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ, рддреЛ рдЗрд╕реЗ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдореЗрдВ рдмрджрд▓рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рд╕рдВрд╕реНрдХрд░рдг 3.6.0 рдореЗрдВ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:


 // class com.p6spy.engine.common.Value private String toHexString(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { int temp = (int) b & 0xFF; sb.append(HEX_CHARS[temp / 16]); sb.append(HEX_CHARS[temp % 16]); } return sb.toString(); } 

рдЯрд┐рдкреНрдкрдгреА

рджреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ ( tyts рдФрд░ tyts ) рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг 3.8.2)


 private String toHexString(byte[] bytes) { char[] result = new char[bytes.length * 2]; int idx = 0; for (byte b : bytes) { int temp = (int) b & 0xFF; result[idx++] = HEX_CHARS[temp / 16]; result[idx++] = HEX_CHARS[temp % 16]; } return new String(result); } 

рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдореЗрдВ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛


 insert into report_entity (report_content, id) values ('6C6F..........7565', 1); 

рдЖрдк рджреЗрдЦрд┐рдП, рд╣рд╛рдВ? рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЕрд╕рдлрд▓ рд╕рдВрдпреЛрдЬрди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдореЛрд░реА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ:


  • рд░рд┐рдкреЛрд░реНрдЯ, рдмрд╛рдЗрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ
  • рдЪрд░рд┐рддреНрд░ рд╕рд░рдгреА рдмрд╛рдЗрдЯ рд╕рд░рдгреА рд╕реЗ рд▓реА рдЧрдИ рд╣реИ
  • рдЪрд░рд┐рддреНрд░ рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА
  • StringBuilder , рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрдг рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ
  • рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ StringBuilder рдЕрдВрджрд░ рд╕рд░рдгреА рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрдг рд╕рд░рдгреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИред

рдЗрди рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬрд┐рд╕рдореЗрдВ 2 рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд╛рд╡рд╛ 11 рдкрд░ рдЗрдХрдЯреНрдард╛ рд╣реЛрдиреЗ рдФрд░ рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж (рдпрд╛рдиреА рд╕рдВрдкреАрдбрд╝рд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде) 1 рдЬреАрдмреА рдвреЗрд░ рдХреЗ рд╕рд╛рде, рдЖрдк рдХреЗрд╡рд▓ 71 рдПрдордмреА рдХрд╛ рд╡рдЬрди рдХрд░ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ!


P6spy рдХреЛ рджреВрд░ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:


  • byte[] рдХреЛ java.sql.Clob (рд╕реЛ-рд╕реЛ рд╕реЙрд▓реНрдпреВрд╢рди рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рддреБрд░рдВрдд рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ InputStream / OutputStream рд╕рд╛рде рдЙрдкрджреНрд░рд╡ OutputStream )
  • excludebinary=true рдлрд╝рд╛рдЗрд▓ рдореЗрдВ excludebinary=true рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ (рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдХреНрд╡реЗрд░реА рд▓реЙрдЧ рд╣рд▓реНрдХрд╛ рдФрд░ рд╕реБрдВрджрд░ рд╣реИ:


 insert into report_entity (report_content, id) values ('[binary]', 1); 

рдкреНрд▓реЗрдмреИрдХ рдЧрд╛рдЗрдб README.MD рджреЗрдЦреЗрдВ


рдирд┐рд╖реНрдХрд░реНрд╖:


  • рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ (рд╡рд┐рд╢реЗрд╖ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ) рдореВрд▓реНрдп рдХреА рд╣реИ рдирд░рдореА рд╕реЗ рдорд╣рдВрдЧреА рдмрд╣реБрдд рдкреНрд░рд┐рдп
  • рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ (рджрд┐рдЦрд╛рд╡рдЯ, рдкрд╛рд╕рд╡рд░реНрдб, рдЖрджрд┐) рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╣реИрдВ, рддреЛ рдЖрдк p6spy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд▓реЙрдЧ рдЦрд░рд╛рдм рд╣реИрдВ, рдлрд┐рд░ ... рдареАрдХ рд╣реИ, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ
  • рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ p6spy рд╣реИ рдФрд░ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ / рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд╣реЛрдЧрд╛, рддреЛ рдмрдбрд╝реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ @DynamicInsert / @DynamicUpdate рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдмрд┐рдВрджреБ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрджреНрдпрддрди / рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдмрдирд╛рдХрд░ рд▓реЙрдЧ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рд╣рд╛рдВ, рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╣рд░ рдмрд╛рд░ рдирдП рд╕рд┐рд░реЗ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдЗрдХрд╛рдИ 20 рдореЗрдВ рд╕реЗ 1 рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╕рдордЭреМрддрд╛ рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред

рдЖрдЬ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЗрддрдирд╛ рд╣реА :)

Source: https://habr.com/ru/post/hi457776/


All Articles