зеркало из
				https://github.com/iharh/notes.git
				synced 2025-11-04 15:46:08 +02:00 
			
		
		
		
	m
Этот коммит содержится в:
		
							родитель
							
								
									b179e012f2
								
							
						
					
					
						Коммит
						e368bfaeaf
					
				@ -1,4 +1,28 @@
 | 
			
		||||
https://code.visualstudio.com/docs/languages/java
 | 
			
		||||
https://code.visualstudio.com/docs/java/java-editing
 | 
			
		||||
    !!! a lot of usefull props
 | 
			
		||||
 | 
			
		||||
https://marketplace.visualstudio.com/items?itemName=redhat.java
 | 
			
		||||
    lombok support
 | 
			
		||||
https://marketplace.visualstudio.com/items?itemName=vmware.vscode-boot-dev-pack
 | 
			
		||||
https://marketplace.visualstudio.com/items?itemName=vmware.vscode-spring-boot
 | 
			
		||||
    https://github.com/spring-projects/sts4/tree/main/vscode-extensions/vscode-spring-boot#usage
 | 
			
		||||
    https://github.com/spring-projects/sts4
 | 
			
		||||
    https://code.visualstudio.com/docs/java/java-spring-boot
 | 
			
		||||
 | 
			
		||||
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-gradle
 | 
			
		||||
 | 
			
		||||
settings.json
 | 
			
		||||
{
 | 
			
		||||
    "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable",
 | 
			
		||||
    "java.compile.nullAnalysis.mode": "disabled"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
???
 | 
			
		||||
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-pack
 | 
			
		||||
    ? ms-based
 | 
			
		||||
https://github.com/redhat-developer/vscode-java
 | 
			
		||||
 | 
			
		||||
https://marketplace.visualstudio.com/items?itemName=pverest.java-ide-pack
 | 
			
		||||
https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug
 | 
			
		||||
https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack
 | 
			
		||||
@ -6,7 +30,6 @@ https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack
 | 
			
		||||
https://code.visualstudio.com/docs/languages/java
 | 
			
		||||
https://code.visualstudio.com/docs/java/java-tutorial
 | 
			
		||||
 | 
			
		||||
https://github.com/redhat-developer/vscode-java
 | 
			
		||||
 | 
			
		||||
https://github.com/microsoft/vscode-java-debug
 | 
			
		||||
https://github.com/microsoft/vscode-java-debug/wiki/Hot-Code-Replace
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								pl/cross/tools/ide/vscode/ext/sql/code-mssql.txt
									
									
									
									
									
										Обычный файл
									
								
							
							
						
						
									
										10
									
								
								pl/cross/tools/ide/vscode/ext/sql/code-mssql.txt
									
									
									
									
									
										Обычный файл
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
https://github.com/microsoft/vscode-mssql
 | 
			
		||||
https://learn.microsoft.com/en-us/sql/tools/visual-studio-code/sql-server-develop-use-vscode
 | 
			
		||||
 | 
			
		||||
Installing SQL tools service to
 | 
			
		||||
    ~/.vscode/extensions/ms-mssql.mssql-1.20.1/sqltoolsservice/4.8.1.2/Ubuntu16
 | 
			
		||||
downloading
 | 
			
		||||
    https://github.com/Microsoft/sqltoolsservice/releases/download/4.8.1.2/microsoft.sqltools.servicelayer-rhel-x64-net7.0.tar.gz
 | 
			
		||||
 | 
			
		||||
snippets
 | 
			
		||||
    sqlCreateDatabase
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
https://code.visualstudio.com/docs/getstarted/settings
 | 
			
		||||
 | 
			
		||||
cfg:
 | 
			
		||||
~/.config/Code/User/settings.json
 | 
			
		||||
https://code.visualstudio.com/docs/customization/userandworkspace
 | 
			
		||||
C:/Users/<>/AppData/Roaming/Code/
 | 
			
		||||
    User/
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,6 @@
 | 
			
		||||
https://fonts.google.com/?selection.family=Source+Code+Pro
 | 
			
		||||
// Place your settings in this file to overwrite the default settings
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
    "editor.fontSize": 18
 | 
			
		||||
    "editor.fontFamily": "SourceCodePro-Medium",
 | 
			
		||||
@ -11,6 +12,9 @@ https://fonts.google.com/?selection.family=Source+Code+Pro
 | 
			
		||||
    "editor.fontLigatures": true,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Explorer font size
 | 
			
		||||
    "window.zoomLevel": 1.5
 | 
			
		||||
 | 
			
		||||
Change Background Color
 | 
			
		||||
 | 
			
		||||
I use the dark theme (View > Theme > Dark theme).
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,10 @@ F10
 | 
			
		||||
F11
 | 
			
		||||
    Step Into
 | 
			
		||||
 | 
			
		||||
C-P
 | 
			
		||||
    Open file
 | 
			
		||||
C-T
 | 
			
		||||
    Open class
 | 
			
		||||
 | 
			
		||||
C+S+P
 | 
			
		||||
    Command Palette
 | 
			
		||||
 | 
			
		||||
@ -1,4 +1,6 @@
 | 
			
		||||
2023
 | 
			
		||||
Mihalcea
 | 
			
		||||
    https://www.youtube.com/watch?v=DY7BUOmtL0c
 | 
			
		||||
https://habr.com/ru/companies/naumen/articles/708244/
 | 
			
		||||
2022
 | 
			
		||||
https://thorben-janssen.com/migrating-to-hibernate-6/
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,279 @@
 | 
			
		||||
LOG.tracev
 | 
			
		||||
    AbstractEntityPersister
 | 
			
		||||
    DefaultFlushEntityEventListener
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
https://thorben-janssen.com/flushmode-in-jpa-and-hibernate/
 | 
			
		||||
    DefaultFlushEventListener
 | 
			
		||||
    DefaultFlushEntityEventListener - too often callled
 | 
			
		||||
    EntityUpdateAction -> good place for BP setting
 | 
			
		||||
 | 
			
		||||
https://github.com/stsypanov/dirty-checking-examples/blob/master/benchmarks/src/main/java/com/luxoft/logeek/benchmark/dirtychecking/hibernate/SimpleDirtyCheckingBenchmark.java
 | 
			
		||||
    entity.$$_hibernate_getDirtyAttributes();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SessionEventListener
 | 
			
		||||
 | 
			
		||||
org.hibernate
 | 
			
		||||
    cfg
 | 
			
		||||
        AvailableSettings
 | 
			
		||||
            tons of settings const-s
 | 
			
		||||
    event
 | 
			
		||||
        spi
 | 
			
		||||
            ...
 | 
			
		||||
            DefaultFlushEntityEventListener {
 | 
			
		||||
                	protected void dirtyCheck(final FlushEntityEvent event) throws HibernateException {
 | 
			
		||||
                      ...
 | 
			
		||||
                      if ( dirtyCheckPossible ) {
 | 
			
		||||
                        // dirty check against the usual snapshot of the entity
 | 
			
		||||
                        dirtyProperties = persister.findDirty( values, loadedState, entity, session );
 | 
			
		||||
                      }
 | 
			
		||||
                      ...
 | 
			
		||||
                      logDirtyProperties
 | 
			
		||||
                  }
 | 
			
		||||
                  ...
 | 
			
		||||
                  private void logDirtyProperties(Serializable id, int[] dirtyProperties, EntityPersister persister) {
 | 
			
		||||
                      ...
 | 
			
		||||
                      LOG.tracev(
 | 
			
		||||
                          "Found dirty properties [{0}] : {1}",
 | 
			
		||||
                          MessageHelper.infoString( persister.getEntityName(), id ),
 | 
			
		||||
                          Arrays.toString( dirtyPropertyNames )
 | 
			
		||||
                          <logger name="org.hibernate.persister.entity.AbstractEntityPersister" level="trace" />
 | 
			
		||||
                          <logger name="org.hibernate.event.internal.DefaultFlushEntityEventListener" level="trace" />
 | 
			
		||||
                      );
 | 
			
		||||
                  }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            RefreshEventListener
 | 
			
		||||
            ReplicateEventListener
 | 
			
		||||
            ResolveNaturalIdEventListener
 | 
			
		||||
            SaveOrUpdateEventListener
 | 
			
		||||
 | 
			
		||||
            public final class EventType<T> {
 | 
			
		||||
                public static final EventType<LoadEventListener> LOAD = create( "load", LoadEventListener.class );
 | 
			
		||||
                public static final EventType<ResolveNaturalIdEventListener> RESOLVE_NATURAL_ID = create( "resolve-natural-id", ResolveNaturalIdEventListener.class );
 | 
			
		||||
 | 
			
		||||
                public static final EventType<InitializeCollectionEventListener> INIT_COLLECTION = create( "load-collection", InitializeCollectionEventListener.class );
 | 
			
		||||
 | 
			
		||||
                public static final EventType<SaveOrUpdateEventListener> SAVE_UPDATE = create( "save-update", SaveOrUpdateEventListener.class );
 | 
			
		||||
                public static final EventType<SaveOrUpdateEventListener> UPDATE = create( "update", SaveOrUpdateEventListener.class );
 | 
			
		||||
                public static final EventType<SaveOrUpdateEventListener> SAVE = create( "save", SaveOrUpdateEventListener.class );
 | 
			
		||||
                ...
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        internal
 | 
			
		||||
            AbstractSaveEventListener
 | 
			
		||||
                saveWithRequestedId()
 | 
			
		||||
                saveWithGeneratedId()
 | 
			
		||||
                    performSave
 | 
			
		||||
 | 
			
		||||
            public class DefaultSaveOrUpdateEventListener extends AbstractSaveEventListener ... {
 | 
			
		||||
                	onSaveOrUpdate
 | 
			
		||||
                  performSaveOrUpdate
 | 
			
		||||
                  entityIsTransied
 | 
			
		||||
                  saveWithGeneratedId
 | 
			
		||||
                      calls AbstractSaveEventListener.performSave
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
          public class DefaultDirtyCheckEventListener extends AbstractFlushingEventListener implements DirtyCheckEventListener {
 | 
			
		||||
          }
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
org.hibernate.internal
 | 
			
		||||
    public abstract class AbstractSharedSessionContract implements SharedSessionContractImplementor {
 | 
			
		||||
	      private static final EntityManagerMessageLogger log = HEMLogging.messageLogger( SessionImpl.class );
 | 
			
		||||
        ...
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    FastSessionServices {
 | 
			
		||||
      	public final EventListenerGroup<AutoFlushEventListener> eventListenerGroup_AUTO_FLUSH;
 | 
			
		||||
        public final EventListenerGroup<ClearEventListener> eventListenerGroup_CLEAR;
 | 
			
		||||
        public final EventListenerGroup<DeleteEventListener> eventListenerGroup_DELETE;
 | 
			
		||||
        public final EventListenerGroup<DirtyCheckEventListener> eventListenerGroup_DIRTY_CHECK;
 | 
			
		||||
        public final EventListenerGroup<EvictEventListener> eventListenerGroup_EVICT;
 | 
			
		||||
        ...
 | 
			
		||||
        FastSessionServices(SessionFactoryImpl sf) {
 | 
			
		||||
            Objects.requireNonNull( sf );
 | 
			
		||||
            final ServiceRegistryImplementor sr = sf.getServiceRegistry();
 | 
			
		||||
            ...
 | 
			
		||||
            // Pre-compute all iterators on Event listeners:
 | 
			
		||||
            final EventListenerRegistry eventListenerRegistry = sr.getService( EventListenerRegistry.class );
 | 
			
		||||
            ...
 | 
			
		||||
        }
 | 
			
		||||
        ...
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    SessionImpl extends AbstractSharedSessionContract {
 | 
			
		||||
        ...
 | 
			
		||||
        fastSessionServices.eventListenerGroup_NAME.fireLazyEvent...(...)
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public EntityPersister getEntityPersister(final String entityName, final Object object) {
 | 
			
		||||
          checkOpenOrWaitingForAutoClose();
 | 
			
		||||
          if ( entityName == null ) {
 | 
			
		||||
            return getFactory().getMetamodel().entityPersister( guessEntityName( object ) );
 | 
			
		||||
          }
 | 
			
		||||
          else {
 | 
			
		||||
              ...
 | 
			
		||||
              return getFactory().getMetamodel().entityPersister( entityName )
 | 
			
		||||
                  .getSubclassEntityPersister( object, getFactory() );
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        	// saveOrUpdate() operations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
          @Override
 | 
			
		||||
          public void saveOrUpdate(Object object) throws HibernateException {
 | 
			
		||||
            saveOrUpdate( null, object );
 | 
			
		||||
          }
 | 
			
		||||
          ...
 | 
			
		||||
        	// save() operations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
			
		||||
          ...
 | 
			
		||||
          @Override
 | 
			
		||||
          public boolean isDirty() throws HibernateException {
 | 
			
		||||
            checkOpen();
 | 
			
		||||
            pulseTransactionCoordinator();
 | 
			
		||||
            log.debug( "Checking session dirtiness" );
 | 
			
		||||
            if ( actionQueue.areInsertionsOrDeletionsQueued() ) {
 | 
			
		||||
              log.debug( "Session dirty (scheduled updates and insertions)" );
 | 
			
		||||
              return true;
 | 
			
		||||
            }
 | 
			
		||||
            DirtyCheckEvent event = new DirtyCheckEvent( this );
 | 
			
		||||
            fastSessionServices.eventListenerGroup_DIRTY_CHECK.fireEventOnEachListener( event, DirtyCheckEventListener::onDirtyCheck );
 | 
			
		||||
            delayedAfterCompletion();
 | 
			
		||||
            return event.isDirty();
 | 
			
		||||
          }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
org.hibernate
 | 
			
		||||
    boot.internal
 | 
			
		||||
        public class MetadataImpl implements MetadataImplementor, Serializable {
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
collection.internal
 | 
			
		||||
    AbstractPersistentCollection {
 | 
			
		||||
        isDirty()
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        boolean equalsSnapshot() {
 | 
			
		||||
            ...
 | 
			
		||||
				    if ( oldValue == null || elementType.isDirty( oldValue, test, getSession() ) ) {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
type
 | 
			
		||||
    https://docs.jboss.org/hibernate/orm/5.6/javadocs/org/hibernate/type/package-summary.html
 | 
			
		||||
 | 
			
		||||
    public interface Type extends Serializable {
 | 
			
		||||
 | 
			
		||||
        	boolean isDirty(Object old, Object current, SharedSessionContractImplementor session) throws HibernateException {
 | 
			
		||||
              
 | 
			
		||||
          }
 | 
			
		||||
    }
 | 
			
		||||
    OneToOneType
 | 
			
		||||
    ManyToOneType
 | 
			
		||||
        getIdentifierType.isSame(...)
 | 
			
		||||
    CollectionType
 | 
			
		||||
    ComponentType
 | 
			
		||||
        @Override
 | 
			
		||||
        public boolean isDirty(final Object x, final Object y, final SharedSessionContractImplementor session) throws HibernateException {
 | 
			
		||||
          if ( x == y ) {
 | 
			
		||||
            return false;
 | 
			
		||||
          }
 | 
			
		||||
          // null value and empty component are considered equivalent
 | 
			
		||||
          for ( int i = 0; i < propertySpan; i++ ) {
 | 
			
		||||
            if ( propertyTypes[i].isDirty( getPropertyValue( x, i ), getPropertyValue( y, i ), session ) ) {
 | 
			
		||||
              return true;
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    AbstractType
 | 
			
		||||
    AbstractStandardBasicType
 | 
			
		||||
        dirty () {
 | 
			
		||||
            !isSame
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    public abstract class EntityType extends AbstractType implements AssociationType {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
persister.entity
 | 
			
		||||
    interface EntityPersister {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    AbstractEntityPersister {
 | 
			
		||||
        protected final BasicEntityPropertyMapping propertyMapping;
 | 
			
		||||
        ...
 | 
			
		||||
 | 
			
		||||
        @Override
 | 
			
		||||
        public int[] resolveDirtyAttributeIndexes(
 | 
			
		||||
            final Object[] currentState,
 | 
			
		||||
            final Object[] previousState,
 | 
			
		||||
            final String[] attributeNames,
 | 
			
		||||
            final SessionImplementor session) {
 | 
			
		||||
          ...
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int[] findDirty(Object[] currentState, Object[] previousState, Object entity, SharedSessionContractImplementor session) throws HibernateException {
 | 
			
		||||
            TypeHelper...
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
    TypeHelper {
 | 
			
		||||
        @Override
 | 
			
		||||
        public static int[] findDirty(
 | 
			
		||||
            final NonIdentifierAttribute[] properties,
 | 
			
		||||
            final Object[] currentState,
 | 
			
		||||
            final Object[] previousState,
 | 
			
		||||
            final boolean[][] includeColumns,
 | 
			
		||||
            final SharedSessionContractImplementor session) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    SingleTableEntityPersister, JoinedSubclassEntityPersister, ... for test
 | 
			
		||||
 | 
			
		||||
persister.internal
 | 
			
		||||
 | 
			
		||||
    public class StandardPersisterClassResolver implements PersisterClassResolver {
 | 
			
		||||
        
 | 
			
		||||
        @Override
 | 
			
		||||
        public Class<? extends EntityPersister> getEntityPersisterClass(PersistentClass metadata) {
 | 
			
		||||
          // todo : make sure this is based on an attribute kept on the metamodel in the new code, not the concrete PersistentClass impl found!
 | 
			
		||||
          if ( RootClass.class.isInstance( metadata ) ) {
 | 
			
		||||
            if ( metadata.hasSubclasses() ) {
 | 
			
		||||
              //If the class has children, we need to find of which kind
 | 
			
		||||
              metadata = (PersistentClass) metadata.getDirectSubclasses().next();
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
              return singleTableEntityPersister();
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          if ( JoinedSubclass.class.isInstance( metadata ) ) {
 | 
			
		||||
            return joinedSubclassEntityPersister();
 | 
			
		||||
          }
 | 
			
		||||
          else if ( UnionSubclass.class.isInstance( metadata ) ) {
 | 
			
		||||
            return unionSubclassEntityPersister();
 | 
			
		||||
          }
 | 
			
		||||
          else if ( SingleTableSubclass.class.isInstance( metadata ) ) {
 | 
			
		||||
            return singleTableEntityPersister();
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public final class PersisterFactoryImpl implements PersisterFactory, ServiceRegistryAwareService {
 | 
			
		||||
        	@Override
 | 
			
		||||
          public EntityPersister createEntityPersister(
 | 
			
		||||
              PersistentClass entityBinding,
 | 
			
		||||
              EntityDataAccess entityCacheAccessStrategy,
 | 
			
		||||
              NaturalIdDataAccess naturalIdCacheAccessStrategy,
 | 
			
		||||
              PersisterCreationContext creationContext) throws HibernateException {
 | 
			
		||||
              ...
 | 
			
		||||
              // called by MetamodelImpl
 | 
			
		||||
                public class MetamodelImpl implements MetamodelImplementor, Serializable {
 | 
			
		||||
                  	public void initialize(MetadataImplementor mappingMetadata, JpaMetaModelPopulationSetting jpaMetaModelPopulationSetting) {
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
          }
 | 
			
		||||
    }
 | 
			
		||||
@ -13,3 +13,5 @@ https://habr.com/ru/post/715918/
 | 
			
		||||
2022
 | 
			
		||||
https://www.baeldung.com/database-auditing-jpa
 | 
			
		||||
https://www.baeldung.com/spring-data-jpa-method-in-all-repositories
 | 
			
		||||
2014
 | 
			
		||||
https://habr.com/ru/articles/238487/
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,5 @@
 | 
			
		||||
2023
 | 
			
		||||
https://www.baeldung.com/spring-boot-redis-cache
 | 
			
		||||
https://www.baeldung.com/spring-data-redis-properties
 | 
			
		||||
2020
 | 
			
		||||
https://habr.com/ru/articles/517246/
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								pl/web/js/libfws/ui/visual/graph/litegraph.txt
									
									
									
									
									
										Обычный файл
									
								
							
							
						
						
									
										1
									
								
								pl/web/js/libfws/ui/visual/graph/litegraph.txt
									
									
									
									
									
										Обычный файл
									
								
							@ -0,0 +1 @@
 | 
			
		||||
https://github.com/jagenjo/litegraph.js
 | 
			
		||||
		Загрузка…
	
	
			
			x
			
			
		
	
		Ссылка в новой задаче
	
	Block a user