Есть хорошие объяснения. Я добавляю только пример, показывающий, как стирание типа работает с декомпилятором.
Исходный класс,
import java.util.ArrayList;
import java.util.List;
public class S<T> {
T obj;
S(T o) {
obj = o;
}
T getob() {
return obj;
}
public static void main(String args[]) {
List<String> list = new ArrayList<>();
list.add("Hello");
// for-each
for(String s : list) {
String temp = s;
System.out.println(temp);
}
// stream
list.forEach(System.out::println);
}
}
Декомпилированный код из его байт-кода,
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Objects;
import java.util.function.Consumer;
public class S {
Object obj;
S(Object var1) {
this.obj = var1;
}
Object getob() {
return this.obj;
}
public static void main(String[] var0) {
ArrayList var1 = new ArrayList();
var1.add("Hello");
// for-each
Iterator iterator = var1.iterator();
while (iterator.hasNext()) {
String string;
String string2 = string = (String)iterator.next();
System.out.println(string2);
}
// stream
PrintStream printStream = System.out;
Objects.requireNonNull(printStream);
var1.forEach(printStream::println);
}
}
Можно поместить что-то вроде этого в app.config/web.config файл:
в configSections узле:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
в узле конфигурации:
<log4net>
<appender name="NHibernateFileLog" type="log4net.Appender.FileAppender">
<file value="logs/nhibernate.txt" />
<appendToFile value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{HH:mm:ss.fff} [%t] %-5p %c - %m%n" />
</layout>
</appender>
<logger name="NHibernate.SQL" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="NHibernateFileLog"/>
</logger>
</log4net>
И не забывают звонить
log4net.Config.XmlConfigurator.Configure();
при запуске Вашего приложения, или помещать
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
в assemblyinfo.cs
В параметрах конфигурации, устанавливать "show_sql" свойство на истинный.
В параметрах конфигурации, набор "show_sql" свойство к истинному. Это заставит SQL быть произведенным в любезности файлов журнала NHIBERNATE log4net.
Используйте профилировщика SQL-сервера.
РЕДАКТИРОВАНИЕ (1 год спустя): Как @Toran состояния Billups ниже, записал профилировщик NHibernate Ayende, очень очень прохладно.
Существует хорошая ссылка для NHibernate, регистрирующегося в: , Как настроить Log4Net для использования с NHibernate. Это включает информацию о входе всех NHibernate-сгенерированных SQL-операторов.
Вы также можете попробовать NHibernate Profiler (30-дневная пробная версия). Это лучший инструмент IMHO.
Он не только покажет сгенерированный SQL, но и предупреждения / предложения / и т.д.
Nhibernate Profiler - вариант, если вам нужно сделать что-нибудь серьезное.